use of org.pentaho.di.trans.TransHopMeta in project pdi-dataservice-server-plugin by pentaho.
the class SqlTransGenerator method generateIifStep.
/**
* This method generates a 4 steps for every IIF clause... TODO: replace with one step...
*
* @param iifField
* @param lastStep
* @param transMeta
* @return steps
*/
private StepMeta generateIifStep(SQLField iifField, TransMeta transMeta, StepMeta lastStep) {
IifFunction iif = iifField.getIif();
// The Filter condition...
//
FilterRowsMeta filterMeta = new FilterRowsMeta();
filterMeta.setCondition(iifField.getIif().getSqlCondition().getCondition());
StepMeta filterStep = new StepMeta(iifField.getExpression(), filterMeta);
filterStep.setLocation(xLocation, 50);
xLocation += 100;
filterStep.setDraw(true);
lastStep = addToTrans(filterStep, transMeta, lastStep);
// The True and false steps...
//
StepMetaInterface trueMetaInterface;
ValueMetaInterface valueMeta = iif.getTrueValue().getValueMeta();
if (iif.isTrueField()) {
CalculatorMeta trueMeta = new CalculatorMeta();
trueMetaInterface = trueMeta;
trueMeta.allocate(1);
CalculatorMetaFunction function = new CalculatorMetaFunction();
function.setFieldName(Const.NVL(iifField.getAlias(), iifField.getField()));
function.setCalcType(CalculatorMetaFunction.CALC_COPY_OF_FIELD);
function.setValueType(valueMeta.getType());
function.setValueLength(valueMeta.getLength());
function.setValuePrecision(valueMeta.getPrecision());
function.setFieldA(iif.getTrueValueString());
function.setConversionMask(valueMeta.getConversionMask());
// CHECKSTYLE:Indentation:OFF
trueMeta.getCalculation()[0] = function;
} else {
ConstantMeta trueMeta = new ConstantMeta();
trueMetaInterface = trueMeta;
trueMeta.allocate(1);
// CHECKSTYLE:Indentation:OFF
trueMeta.getFieldName()[0] = Const.NVL(iifField.getAlias(), iifField.getField());
trueMeta.getFieldType()[0] = iif.getTrueValue().getValueMeta().getTypeDesc();
trueMeta.getValue()[0] = iif.getTrueValue().toString();
trueMeta.getFieldFormat()[0] = valueMeta.getConversionMask();
}
StepMeta trueStep = new StepMeta("TRUE: " + iifField.getExpression(), trueMetaInterface);
trueStep.setLocation(xLocation, 50);
trueStep.setDraw(true);
lastStep = addToTrans(trueStep, transMeta, filterStep);
StepMetaInterface falseMetaInterface;
valueMeta = iif.getFalseValue().getValueMeta();
if (iif.isFalseField()) {
CalculatorMeta falseMeta = new CalculatorMeta();
falseMetaInterface = falseMeta;
falseMeta.allocate(1);
CalculatorMetaFunction function = new CalculatorMetaFunction();
function.setFieldName(Const.NVL(iifField.getAlias(), iifField.getField()));
function.setCalcType(CalculatorMetaFunction.CALC_COPY_OF_FIELD);
function.setValueType(valueMeta.getType());
function.setValueLength(valueMeta.getLength());
function.setValuePrecision(valueMeta.getPrecision());
function.setFieldA(iif.getFalseValueString());
function.setConversionMask(valueMeta.getConversionMask());
falseMeta.getCalculation()[0] = function;
} else {
ConstantMeta falseMeta = new ConstantMeta();
falseMetaInterface = falseMeta;
falseMeta.allocate(1);
falseMeta.getFieldName()[0] = Const.NVL(iifField.getAlias(), iifField.getField());
falseMeta.getFieldType()[0] = iif.getFalseValue().getValueMeta().getTypeDesc();
falseMeta.getFieldFormat()[0] = valueMeta.getConversionMask();
falseMeta.getValue()[0] = iif.getFalseValue().toString();
}
StepMeta falseStep = new StepMeta("FALSE: " + iifField.getExpression(), falseMetaInterface);
falseStep.setLocation(xLocation, 150);
xLocation += 100;
falseStep.setDraw(true);
lastStep = addToTrans(falseStep, transMeta, filterStep);
// specify true/false targets
List<StreamInterface> targetStreams = filterMeta.getStepIOMeta().getTargetStreams();
targetStreams.get(0).setSubject(trueStep.getName());
targetStreams.get(1).setSubject(falseStep.getName());
filterMeta.searchInfoAndTargetSteps(transMeta.getSteps());
DummyTransMeta dummyMeta = new DummyTransMeta();
StepMeta dummyStep = new StepMeta("Collect: " + iifField.getExpression(), dummyMeta);
dummyStep.setLocation(xLocation, 50);
xLocation += 100;
dummyStep.setDraw(true);
lastStep = addToTrans(dummyStep, transMeta, trueStep);
transMeta.addTransHop(new TransHopMeta(falseStep, dummyStep));
return lastStep;
}
use of org.pentaho.di.trans.TransHopMeta in project pdi-dataservice-server-plugin by pentaho.
the class AnnotationsQueryServiceTest method testAnnotationsOnCurrentStep2Paths.
@Test
public void testAnnotationsOnCurrentStep2Paths() throws Exception {
TransMeta transMeta = new TransMeta();
DummyTransMeta src1Meta = new DummyTransMeta();
StepMeta src1 = new StepMeta("src1", src1Meta);
transMeta.addStep(src1);
final ModelAnnotationGroup mag1 = new ModelAnnotationGroup(new ModelAnnotation<CreateAttribute>(new CreateAttribute()));
final String name1 = mag1.get(0).getName();
DummyTransMeta annot1Meta = createPseudoAnnotate(mag1);
StepMeta annot1 = new StepMeta("annot1", annot1Meta);
transMeta.addStep(annot1);
TransHopMeta src1ToAnnot1 = new TransHopMeta(src1, annot1);
transMeta.addTransHop(src1ToAnnot1);
DummyTransMeta src2Meta = new DummyTransMeta();
StepMeta src2 = new StepMeta("src2", src2Meta);
transMeta.addStep(src2);
final ModelAnnotationGroup mag2 = new ModelAnnotationGroup(new ModelAnnotation<CreateAttribute>(new CreateAttribute()));
final String name2 = mag2.get(0).getName();
DummyTransMeta annot2Meta = createPseudoAnnotate(mag2);
StepMeta annot2 = new StepMeta("annot2", annot2Meta);
transMeta.addStep(annot2);
TransHopMeta src2ToAnnot2 = new TransHopMeta(src2, annot2);
transMeta.addTransHop(src2ToAnnot2);
DummyTransMeta mergedMeta = new DummyTransMeta();
StepMeta mergedStepMeta = new StepMeta("merged", mergedMeta);
transMeta.addStep(mergedStepMeta);
transMeta.addTransHop(new TransHopMeta(annot1, mergedStepMeta));
transMeta.addTransHop(new TransHopMeta(annot2, mergedStepMeta));
final DataServiceMeta ds1 = new DataServiceMeta((TransMeta) transMeta.clone());
ds1.setName("dsa");
ds1.setStepname("annot1");
final DataServiceMeta dsAll = new DataServiceMeta((TransMeta) transMeta.clone());
dsAll.setName("ds");
dsAll.setStepname("merged");
final DataServiceDelegate dataServiceFactory = mock(DataServiceDelegate.class);
final DataServiceResolver dataServiceResolver = mock(DataServiceResolver.class);
when(dataServiceResolver.getDataService("dsAll")).thenReturn(dsAll);
when(dataServiceResolver.getDataService("ds1")).thenReturn(ds1);
final DataServiceContext dataServiceContext = mock(DataServiceContext.class);
when(dataServiceContext.getDataServiceDelegate()).thenReturn(dataServiceFactory);
final MetastoreLocator metastoreLocator = mock(MetastoreLocator.class);
when(metastoreLocator.getMetastore()).thenReturn(null);
AnnotationsQueryService queryService = new AnnotationsQueryService(metastoreLocator, dataServiceResolver);
Query query = queryService.prepareQuery("show annotations from ds1", 0, Collections.<String, String>emptyMap());
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
query.writeTo(outputStream);
String result = getResultString(outputStream);
assertTrue(result.contains(name1));
assertFalse(result.contains(name2));
queryService = new AnnotationsQueryService(metastoreLocator, dataServiceResolver);
query = queryService.prepareQuery("show annotations from dsAll", 0, Collections.<String, String>emptyMap());
outputStream = new ByteArrayOutputStream();
query.writeTo(outputStream);
String result2 = getResultString(outputStream);
assertTrue(result2.contains(name1));
assertTrue(result2.contains(name2));
}
use of org.pentaho.di.trans.TransHopMeta in project pdi-dataservice-server-plugin by pentaho.
the class AnnotationsQueryServiceTest method testAnnotationsOnCurrentStep.
@Test
public void testAnnotationsOnCurrentStep() throws Exception {
TransMeta transMeta = new TransMeta();
DummyTransMeta src1Meta = new DummyTransMeta();
StepMeta src1 = new StepMeta("src", src1Meta);
transMeta.addStep(src1);
final ModelAnnotationGroup mag1 = new ModelAnnotationGroup(new ModelAnnotation<CreateAttribute>(new CreateAttribute()));
final String name1 = mag1.get(0).getName();
DummyTransMeta annot1Meta = createPseudoAnnotate(mag1);
StepMeta annot1 = Mockito.spy(new StepMeta("annot", annot1Meta));
transMeta.addStep(annot1);
TransHopMeta src1ToAnnot1 = new TransHopMeta(src1, annot1);
transMeta.addTransHop(src1ToAnnot1);
final DataServiceMeta dsA = new DataServiceMeta(transMeta);
dsA.setName("dsa");
dsA.setStepname("annot");
final DataServiceMeta ds1 = new DataServiceMeta(transMeta);
ds1.setName("ds");
ds1.setStepname("src");
final DataServiceDelegate dataServiceFactory = mock(DataServiceDelegate.class);
final DataServiceContext dataServiceContext = mock(DataServiceContext.class);
when(dataServiceContext.getDataServiceDelegate()).thenReturn(dataServiceFactory);
final DataServiceResolver dataServiceResolver = mock(DataServiceResolver.class);
when(dataServiceResolver.getDataService("ds")).thenReturn(ds1);
when(dataServiceResolver.getDataService("dsa")).thenReturn(dsA);
final MetastoreLocator metastoreLocator = mock(MetastoreLocator.class);
when(metastoreLocator.getMetastore()).thenReturn(null);
final AnnotationsQueryService queryService = new AnnotationsQueryService(metastoreLocator, dataServiceResolver);
Query query = queryService.prepareQuery("show annotations from dsa", 0, Collections.<String, String>emptyMap());
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
query.writeTo(outputStream);
String result = getResultString(outputStream);
assertTrue(result.contains(name1));
query = queryService.prepareQuery("show annotations from ds", 0, Collections.<String, String>emptyMap());
outputStream = new ByteArrayOutputStream();
query.writeTo(outputStream);
result = getResultString(outputStream);
String output = getResultString(outputStream);
assertEquals("<annotations></annotations>", output.trim());
}
use of org.pentaho.di.trans.TransHopMeta in project data-access by pentaho.
the class StagingTransformGenerator method createHop.
protected void createHop(StepMeta fromStep, StepMeta toStep, TransMeta transMeta) {
TransHopMeta hopMeta = new TransHopMeta();
hopMeta.setFromStep(fromStep);
hopMeta.setToStep(toStep);
hopMeta.setEnabled(true);
transMeta.addTransHop(hopMeta);
}
use of org.pentaho.di.trans.TransHopMeta in project pentaho-metaverse by pentaho.
the class TransMetaJsonSerializer method serializeHops.
@Override
protected void serializeHops(TransMeta meta, JsonGenerator json) throws IOException {
// Hops
json.writeArrayFieldStart(JSON_PROPERTY_HOPS);
int numberOfHops = meta.nrTransHops();
for (int i = 0; i < numberOfHops; i++) {
TransHopMeta hopMeta = meta.getTransHop(i);
HopInfo hopInfo = new HopInfo(hopMeta);
json.writeObject(hopInfo);
}
json.writeEndArray();
}
Aggregations