Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,9 @@
import lombok.Getter;
import lombok.Setter;
import org.apache.hop.core.changed.ChangedFlag;
import org.apache.hop.core.exception.HopException;
import org.apache.hop.core.exception.HopRuntimeException;
import org.apache.hop.core.exception.HopXmlException;
import org.apache.hop.core.row.IRowMeta;
import org.apache.hop.core.row.IValueMeta;
import org.apache.hop.core.row.RowMeta;
Expand All @@ -31,6 +33,8 @@
import org.apache.hop.core.variables.IVariables;
import org.apache.hop.core.xml.XmlHandler;
import org.apache.hop.metadata.api.HopMetadataProperty;
import org.apache.hop.metadata.serializer.memory.MemoryMetadataProvider;
import org.apache.hop.metadata.serializer.xml.XmlMetadataUtil;
import org.w3c.dom.Node;

/** This class contains the metadata to handle proper error handling on a transform level. */
Expand Down Expand Up @@ -155,40 +159,25 @@ public TransformErrorMeta clone() {
}
}

public String getXml() {
return XmlHandler.openTag(TransformErrorMeta.XML_ERROR_TAG)
+ XmlHandler.addTagValue(
TransformErrorMeta.XML_SOURCE_TRANSFORM_TAG,
sourceTransform != null ? sourceTransform.getName() : "")
+ XmlHandler.addTagValue(
TransformErrorMeta.XML_TARGET_TRANSFORM_TAG,
targetTransform != null ? targetTransform.getName() : "")
+ XmlHandler.addTagValue("is_enabled", enabled)
+ XmlHandler.addTagValue("nr_valuename", nrErrorsValueName)
+ XmlHandler.addTagValue("descriptions_valuename", errorDescriptionsValueName)
+ XmlHandler.addTagValue("fields_valuename", errorFieldsValueName)
+ XmlHandler.addTagValue("codes_valuename", errorCodesValueName)
+ XmlHandler.addTagValue("max_errors", maxErrors)
+ XmlHandler.addTagValue("max_pct_errors", maxPercentErrors)
+ XmlHandler.addTagValue("min_pct_rows", minPercentRows)
+ XmlHandler.closeTag(TransformErrorMeta.XML_ERROR_TAG);
public String getXml() throws HopException {
return XmlHandler.aroundTag(XML_ERROR_TAG, XmlMetadataUtil.serializeObjectToXml(this));
}

public TransformErrorMeta(Node node, List<TransformMeta> transforms) {
sourceTransform =
TransformMeta.findTransform(
transforms, XmlHandler.getTagValue(node, TransformErrorMeta.XML_SOURCE_TRANSFORM_TAG));
targetTransform =
TransformMeta.findTransform(
transforms, XmlHandler.getTagValue(node, TransformErrorMeta.XML_TARGET_TRANSFORM_TAG));
enabled = "Y".equals(XmlHandler.getTagValue(node, "is_enabled"));
nrErrorsValueName = XmlHandler.getTagValue(node, "nr_valuename");
errorDescriptionsValueName = XmlHandler.getTagValue(node, "descriptions_valuename");
errorFieldsValueName = XmlHandler.getTagValue(node, "fields_valuename");
errorCodesValueName = XmlHandler.getTagValue(node, "codes_valuename");
maxErrors = XmlHandler.getTagValue(node, "max_errors");
maxPercentErrors = XmlHandler.getTagValue(node, "max_pct_errors");
minPercentRows = XmlHandler.getTagValue(node, "min_pct_rows");
@Getter
public static class Transforms {
private List<TransformMeta> transforms;
}

public TransformErrorMeta(Node node, List<TransformMeta> transforms) throws HopXmlException {
// The deSerializeFromXml call searches for a List field called 'transforms' in the provided
// Object.
// Normally this is the transform metadata but here we wrap it a tiny class.
//
Transforms parentObject = new Transforms();
parentObject.transforms = transforms;

XmlMetadataUtil.deSerializeFromXml(
parentObject, null, node, TransformErrorMeta.class, this, new MemoryMetadataProvider());
}

public IRowMeta getErrorRowMeta(IVariables variables) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,12 @@

import java.util.List;
import org.apache.hop.core.exception.HopException;
import org.apache.hop.core.xml.XmlHandler;
import org.apache.hop.junit.rules.RestoreHopEngineEnvironmentExtension;
import org.apache.hop.metadata.serializer.xml.XmlMetadataUtil;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.w3c.dom.Node;

@ExtendWith(RestoreHopEngineEnvironmentExtension.class)
class ModPartitionerTest {
Expand All @@ -37,4 +40,14 @@ void testSerialization() throws HopException {
assertNotNull(tester);
tester.testSerialization();
}

@Test
void testSerializationRoundTrip() throws HopException {
ModPartitioner test = new ModPartitioner();
test.setFieldName("field1");

String xml = XmlHandler.aroundTag("p", XmlMetadataUtil.serializeObjectToXml(test));

Node node = XmlHandler.loadXmlString(xml, "p");
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,30 @@

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertTrue;

import java.util.ArrayList;
import java.util.List;
import org.apache.hop.core.annotations.Transform;
import org.apache.hop.core.plugins.PluginRegistry;
import org.apache.hop.core.plugins.TransformPluginType;
import org.apache.hop.core.row.IRowMeta;
import org.apache.hop.core.row.IValueMeta;
import org.apache.hop.core.variables.IVariables;
import org.apache.hop.core.variables.Variables;
import org.apache.hop.core.xml.XmlHandler;
import org.apache.hop.pipeline.transform.transforms.FakeMeta;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.w3c.dom.Node;

class TransformErrorMetaTest {
@BeforeEach
void setUp() throws Exception {
PluginRegistry registry = PluginRegistry.getInstance();
registry.registerPluginClass(
FakeMeta.class.getName(), TransformPluginType.class, Transform.class);
}

@Test
void testGetErrorRowMeta() {
Expand Down Expand Up @@ -57,4 +73,38 @@ void testGetErrorRowMeta() {
assertEquals(IValueMeta.TYPE_STRING, result.getValueMeta(3).getType());
assertEquals("errorCodes", result.getValueMeta(3).getName());
}

@Test
void testSerialization() throws Exception {
List<TransformMeta> transforms = new ArrayList<>();
TransformMeta t1 = new TransformMeta("t1", new FakeMeta());
transforms.add(t1);
TransformMeta t2 = new TransformMeta("t1", new FakeMeta());
transforms.add(t2);

TransformErrorMeta meta = new TransformErrorMeta();
meta.setSourceTransform(t1);
meta.setTargetTransform(t2);
meta.setEnabled(true);
meta.setMaxErrors("400");
meta.setMinPercentRows("100");
meta.setMaxPercentErrors("25");
meta.setErrorFieldsValueName("errorFields");
meta.setErrorCodesValueName("errorCodes");
meta.setErrorDescriptionsValueName("errorDescriptions");

String xml = meta.getXml();
Node node = XmlHandler.loadXmlString(xml, TransformErrorMeta.XML_ERROR_TAG);
TransformErrorMeta copy = new TransformErrorMeta(node, transforms);

assertEquals(meta.getSourceTransform(), copy.getSourceTransform());
assertEquals(meta.getTargetTransform(), copy.getTargetTransform());
assertTrue(copy.isEnabled());
assertEquals("400", copy.getMaxErrors());
assertEquals("100", copy.getMinPercentRows());
assertEquals("25", copy.getMaxPercentErrors());
assertEquals("errorFields", copy.getErrorFieldsValueName());
assertEquals("errorCodes", copy.getErrorCodesValueName());
assertEquals("errorDescriptions", copy.getErrorDescriptionsValueName());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ public void callExtensionPoint(
}
}

// Find the location that was double clicked on...
// Find the location that was double-clicked on...
//
MouseEvent e = pipelineGraphExtension.getEvent();
Point point = pipelineGraphExtension.getPoint();
Expand All @@ -91,8 +91,9 @@ public void callExtensionPoint(
// Check if this is the flask...
//
if (DataSetConst.AREA_DRAWN_INPUT_DATA_SET.equals(areaOwner.getParent())) {
pipelineGraphExtension.setPreventingDefault(true);

// Open the dataset double clicked on...
// Open the dataset double-clicked on...
//
String transformName = (String) areaOwner.getOwner();

Expand All @@ -112,8 +113,9 @@ public void callExtensionPoint(
}
}
} else if (DataSetConst.AREA_DRAWN_GOLDEN_DATA_SET.equals(areaOwner.getParent())) {
pipelineGraphExtension.setPreventingDefault(true);

// Open the dataset double clicked on...
// Open the dataset double-clicked on...
//
String transformName = (String) areaOwner.getOwner();

Expand All @@ -134,8 +136,9 @@ public void callExtensionPoint(
}
}
} else if (DataSetConst.AREA_DRAWN_GOLDEN_DATA_RESULT.equals(areaOwner.getParent())) {
pipelineGraphExtension.setPreventingDefault(true);

// Open the dataset double clicked on...
// Open the dataset double-clicked on...
//
String transformName = (String) areaOwner.getOwner();

Expand Down
Loading
Loading