Skip to content

Commit

Permalink
Checkin: Exception when add filter for derived measure in DA [45568]
Browse files Browse the repository at this point in the history
  • Loading branch information
lzhang authored and mwu committed Dec 2, 2011
1 parent 7a50435 commit 30709d9
Showing 1 changed file with 62 additions and 0 deletions.
Expand Up @@ -39,6 +39,7 @@
import org.eclipse.birt.data.engine.olap.api.query.ICubeOperation;
import org.eclipse.birt.data.engine.olap.api.query.ICubeQueryDefinition;
import org.eclipse.birt.data.engine.olap.api.query.ICubeSortDefinition;
import org.eclipse.birt.data.engine.olap.api.query.IDerivedMeasureDefinition;
import org.eclipse.birt.data.engine.olap.api.query.IDimensionDefinition;
import org.eclipse.birt.data.engine.olap.api.query.IEdgeDefinition;
import org.eclipse.birt.data.engine.olap.api.query.IEdgeDrillFilter;
Expand Down Expand Up @@ -122,6 +123,9 @@ public static void save( String queryResultID, IDocArchiveWriter writer, ICubeQu
//save computed measures
saveComputedMeasures( dos, qd.getComputedMeasures( ) );

//save calculated measures
saveCalculatedMeasures( dos, qd.getDerivedMeasures( ) );

//save edges
saveEdges( dos, qd );

Expand All @@ -141,6 +145,61 @@ public static void save( String queryResultID, IDocArchiveWriter writer, ICubeQu
}
}

private static void saveCalculatedMeasures( DataOutputStream dos, List<IDerivedMeasureDefinition> derivedMeasures ) throws IOException, DataException
{
if ( writeSize( dos, derivedMeasures ) > 0 )
{
for ( IDerivedMeasureDefinition m : derivedMeasures )
{
saveCalculatedMeasure( dos, m );
}
}
}

private static void loadCalculatedMeasures( DataInputStream dis, ICubeQueryDefinition qd, int version ) throws DataException, IOException
{
if ( version < VersionManager.getLatestVersion( ) )
return;
int size = IOUtil.readInt( dis );
for ( int i = 0; i < size; i++)
{
IDerivedMeasureDefinition md = loadCaculatedMeasure( dis );
IMeasureDefinition md1 = qd.createDerivedMeasure(
md.getName( ),
md.getDataType( ),
md.getExpression( ));
md1.setAggrFunction( md.getAggrFunction( ) );
}

}

private static void saveCalculatedMeasure( DataOutputStream dos,IDerivedMeasureDefinition m ) throws IOException, DataException
{
if ( m == null )
{
IOUtil.writeBool( dos, false );
return;
}
saveMeasure( dos, m );
IOUtil.writeInt( dos, m.getDataType( ) );
ExprUtil.saveBaseExpr( dos, m.getExpression( ) );
}

private static IDerivedMeasureDefinition loadCaculatedMeasure( DataInputStream dis ) throws DataException, IOException
{
IMeasureDefinition md = loadMeasure( dis );
if ( md == null )
{
return null;
}
String name = md.getName( );
int type = IOUtil.readInt( dis );
IBaseExpression expr = ExprUtil.loadBaseExpr( dis );
IDerivedMeasureDefinition dmd = new DerivedMeasureDefinition( name, type, expr );
dmd.setAggrFunction( md.getAggrFunction( ) );
return dmd;
}

private static void saveVersion( String queryResultID, IDocArchiveWriter writer ) throws IOException
{
RAOutputStream outputStream = writer.createRandomAccessStream( queryResultID + "_VERSION" );
Expand Down Expand Up @@ -199,6 +258,9 @@ public static ICubeQueryDefinition load( String queryResultID, DataEngineContex
//load computed measures
loadComputedMeasures( dis, cqd );

//load calculated measures
loadCalculatedMeasures( dis, cqd , version );

//load edges
loadEdges( dis, cqd );

Expand Down

0 comments on commit 30709d9

Please sign in to comment.