Skip to content

Commit

Permalink
Cleanup XML of action Wait for file apache#1999
Browse files Browse the repository at this point in the history
  • Loading branch information
nadment authored and bamaer committed May 11, 2023
1 parent edf0751 commit 08f8778
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 49 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -24,12 +24,11 @@
import org.apache.hop.core.Result;
import org.apache.hop.core.ResultFile;
import org.apache.hop.core.annotations.Action;
import org.apache.hop.core.exception.HopXmlException;
import org.apache.hop.core.util.Utils;
import org.apache.hop.core.variables.IVariables;
import org.apache.hop.core.vfs.HopVfs;
import org.apache.hop.core.xml.XmlHandler;
import org.apache.hop.i18n.BaseMessages;
import org.apache.hop.metadata.api.HopMetadataProperty;
import org.apache.hop.metadata.api.IHopMetadataProvider;
import org.apache.hop.resource.ResourceEntry;
import org.apache.hop.resource.ResourceEntry.ResourceType;
Expand All @@ -39,8 +38,6 @@
import org.apache.hop.workflow.action.IAction;
import org.apache.hop.workflow.action.validator.ActionValidatorUtils;
import org.apache.hop.workflow.action.validator.AndValidator;
import org.w3c.dom.Node;

import java.util.List;

/** This defines a 'wait for file' action. Its use is to wait for a file to appear. */
Expand All @@ -55,15 +52,26 @@
public class ActionWaitForFile extends ActionBase implements Cloneable, IAction {
private static final Class<?> PKG = ActionWaitForFile.class; // For Translator

@HopMetadataProperty(key = "filename")
private String filename;
private String maximumTimeout; // maximum timeout in seconds
private String checkCycleTime; // cycle time in seconds
/** Maximum timeout in seconds */
@HopMetadataProperty(key = "maximum_timeout")
private String maximumTimeout;
/** cycle time in seconds */
@HopMetadataProperty(key = "check_cycle_time")
private String checkCycleTime;
@HopMetadataProperty(key = "success_on_timeout")
private boolean successOnTimeout;
@HopMetadataProperty(key = "file_size_check")
private boolean fileSizeCheck;
@HopMetadataProperty(key = "add_filename_result")
private boolean addFilenameToResult;

// infinite timeout
private static String DEFAULT_MAXIMUM_TIMEOUT = "0";

private static String DEFAULT_MAXIMUM_TIMEOUT = "0"; // infinite timeout
private static String DEFAULT_CHECK_CYCLE_TIME = "60"; // 1 minute
// 1 minute
private static String DEFAULT_CHECK_CYCLE_TIME = "60";

public ActionWaitForFile(String n) {
super(n, "");
Expand All @@ -85,41 +93,6 @@ public Object clone() {
return je;
}

@Override
public String getXml() {
StringBuilder retval = new StringBuilder(100);

retval.append(super.getXml());
retval.append(" ").append(XmlHandler.addTagValue("filename", filename));
retval.append(" ").append(XmlHandler.addTagValue("maximum_timeout", maximumTimeout));
retval.append(" ").append(XmlHandler.addTagValue("check_cycle_time", checkCycleTime));
retval.append(" ").append(XmlHandler.addTagValue("success_on_timeout", successOnTimeout));
retval.append(" ").append(XmlHandler.addTagValue("file_size_check", fileSizeCheck));
retval
.append(" ")
.append(XmlHandler.addTagValue("add_filename_result", addFilenameToResult));

return retval.toString();
}

@Override
public void loadXml(Node entrynode, IHopMetadataProvider metadataProvider, IVariables variables)
throws HopXmlException {
try {
super.loadXml(entrynode);
filename = XmlHandler.getTagValue(entrynode, "filename");
maximumTimeout = XmlHandler.getTagValue(entrynode, "maximum_timeout");
checkCycleTime = XmlHandler.getTagValue(entrynode, "check_cycle_time");
successOnTimeout =
"Y".equalsIgnoreCase(XmlHandler.getTagValue(entrynode, "success_on_timeout"));
fileSizeCheck = "Y".equalsIgnoreCase(XmlHandler.getTagValue(entrynode, "file_size_check"));
addFilenameToResult =
"Y".equalsIgnoreCase(XmlHandler.getTagValue(entrynode, "add_filename_result"));
} catch (HopXmlException xe) {
throw new HopXmlException("Unable to load action of type 'wait for file' from XML node", xe);
}
}

public void setFilename(String filename) {
this.filename = filename;
}
Expand All @@ -139,7 +112,7 @@ public Result execute(Result previousResult, int nr) {
Result result = previousResult;
result.setResult(false);

// starttime (in seconds)
// Start time (in seconds)
long timeStart = System.currentTimeMillis() / 1000;

if (filename != null) {
Expand Down Expand Up @@ -379,9 +352,8 @@ public List<ResourceReference> getResourceDependencies(
IVariables variables, WorkflowMeta workflowMeta) {
List<ResourceReference> references = super.getResourceDependencies(variables, workflowMeta);
if (!Utils.isEmpty(filename)) {
String realFileName = resolve(filename);
ResourceReference reference = new ResourceReference(this);
reference.getEntries().add(new ResourceEntry(realFileName, ResourceType.FILE));
reference.getEntries().add(new ResourceEntry(getRealFilename(), ResourceType.FILE));
references.add(reference);
}
return references;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -296,9 +296,9 @@ public void widgetSelected(SelectionEvent e) {
/** Copy information from the meta-data input to the dialog fields. */
public void getData() {
wName.setText(Const.nullToEmpty(action.getName()));
wFilename.setText(Const.NVL(action.getFilename(), ""));
wMaximumTimeout.setText(Const.NVL(action.getMaximumTimeout(), ""));
wCheckCycleTime.setText(Const.NVL(action.getCheckCycleTime(), ""));
wFilename.setText(Const.nullToEmpty(action.getFilename()));
wMaximumTimeout.setText(Const.nullToEmpty(action.getMaximumTimeout()));
wCheckCycleTime.setText(Const.nullToEmpty(action.getCheckCycleTime()));
wSuccessOnTimeout.setSelection(action.isSuccessOnTimeout());
wFileSizeCheck.setSelection(action.isFileSizeCheck());
wAddFilenameResult.setSelection(action.isAddFilenameToResult());
Expand Down

0 comments on commit 08f8778

Please sign in to comment.