Compare commits

...

24 Commits

Author SHA1 Message Date
glzhou
e5b6610abb TPS-1914 [5.5.1] tMDMBulkload can't update the record after install the patch(TMDM-10810)
- update bulkloadclient.jar
2017-04-25 12:05:33 +08:00
zfkang-talend
9d4155314f TMDM-9123 : tMDMBulkload component usage causes high volume of select sqls to mdm db (add "insertOnly" parameter to control server side SELECT operation) (#1184) 2017-04-24 22:55:50 -05:00
Pingwen Lin
d03f803d06 TPS-1462 [5.5.1]tMDMInput with one filter return different records size by different batch size(TMDM-9703) (#571)
TMDM-9703 tMDMInput with one filter return different records size by different batch size (#537)
2016-08-09 14:03:21 +08:00
wchen-talend
c92187aac1 TPS-1175:[5.5.1] Routines don't saves sometime in 5.4.2 Version
(TDI-32401)
2015-12-04 19:04:03 +08:00
pbabin
b54878022c TMDM-8949: Fix Job compilation when multiple tMDMBulkload components are involved in
(cherry picked from commit 4d71f78286)
2015-11-25 18:03:56 +01:00
sbliu
e15fae7537 TMDM-8949: update the bulkloadclient.jar for components. 2015-10-12 16:22:50 +08:00
sbliu
3f0be852c5 Remove unnecessary categories and file 2015-10-10 12:44:23 +08:00
sbliu
c6aa41b4b1 Merge pull request #142 from bguillon-td/master(because the category path diff from patch 5.5.1 to other branch like maintanence/5.5, re-commit commit this file). 2015-10-09 17:41:11 +08:00
sbliu
00f7756d2a Merge pull request #142 from bguillon-td/master
TMDM-8949 add a finally part to tMDMBulkLoad, to clean InputStreamMerger
2015-10-09 16:38:40 +08:00
wchen-talend
15942688cf TPS-986:[5.5.1]Repository Manager - Rule Execution failed for
joblets(TUP-2548)
2015-06-29 14:58:49 +08:00
CHEN Bin
1960c9fcec TPS-952: [5.5.1]Duplicate variable names when enabling parallel
execution on iterations within the same subjob(TDI-30996)
2015-06-10 17:49:04 +08:00
cmeng-talend
82e2af536b TPS-931 fix bug: [5.5.1] tRunJob component does not always show context
parameters (TDI-31474)
https://jira.talendforge.org/browse/TPS-931
2015-05-20 09:56:53 +08:00
sizhaoliu
ec60f556f5 Merge pull request #75 from qiongli/patch/5.5.1
TDQ-10039 make copy tMatchGroup work well.
2015-03-12 14:27:44 +08:00
qiongli
96aafbd48f TDQ-10039 make copy tMatchGroup work well. 2015-03-12 14:16:49 +08:00
Sizhao Liu
85a1808676 add .gitignore config 2015-03-12 13:59:37 +08:00
wchen-talend
985409e0d1 TPS-837:[5.5.1] Patch requested for TDI-31799
java.lang.NullPointerException when opening an joblet imported from
5.2.2 to 5.5.1 or 5.6.1
2015-02-10 14:09:08 +08:00
cmeng-talend
30b5fe0da7 TDI-29234 fix bug: #LINK@NODE doesn't work well as the condition when
TABLE IF in the schema
https://jira.talendforge.org/browse/TDI-29234
2015-01-16 13:08:25 +08:00
hwang
e022cf20f6 TDI-31336:Broken trigger link ‘OnComponentOk’ to joblet 2015-01-04 16:04:29 +08:00
cmeng-talend
a014635905 TDI-31531 fix bug: Bug with txmlmap used in a joblet
https://jira.talendforge.org/browse/TDI-31531
2014-12-26 18:08:50 +08:00
hcyi
c3bd080912 TPS-765:[5.5.1]Shared components not in sync with SVN(TDI-31099) 2014-12-18 18:49:36 +08:00
hcyi
3fa50a4f21 TPS-754:[5.5.1] HL7 - Optional elements are not parsed in the wizard
(TDI-29999)
2014-11-10 18:26:21 +08:00
ycbai
8bfdf93db1 Fix classpath problems. 2014-11-04 17:35:15 +08:00
hwang
fa2d16e5f9 TPS-740:[5.5.1]context value of db password in stats&logs become invalid
after migrate from v5.3.1 to v5.5.1(TDI-30853)
2014-10-27 14:47:11 +08:00
cmeng-talend
97d5f1a66b TPS-725 : [5.5.1] Unable to retrieve salesforce modules from Salesforce
metadata connection(TDI-30366)
https://jira.talendforge.org/browse/TPS-725
2014-10-08 18:48:37 +08:00
73 changed files with 4174 additions and 4427 deletions

6
.gitignore vendored Normal file
View File

@@ -0,0 +1,6 @@
/*/target
/*/bin
/*/class
/*/classes
/*/.settings
/**/dev_con

View File

@@ -49,25 +49,15 @@
boolean hasParallelIterate = false; boolean hasParallelIterate = false;
for (IConnection iterateConn : iterateConnSet) { for (IConnection iterateConn : iterateConnSet) {
parallelIterate = "true".equals(ElementParameterParser.getValue(iterateConn, "__ENABLE_PARALLEL__")); parallelIterate = "true".equals(ElementParameterParser.getValue(iterateConn, "__ENABLE_PARALLEL__"));
String iterateNodeName = iterateConn.getTarget().getUniqueName();
if (parallelIterate) { if (parallelIterate) {
%> %>
TalendThreadPool mtp_<%=iterateConn.getTarget().getUniqueName() %> = new TalendThreadPool(<%=ElementParameterParser.getValue(iterateConn,"__NUMBER_PARALLEL__") %>); TalendThreadPool mtp_<%=iterateConn.getTarget().getUniqueName() %> = new TalendThreadPool(<%=ElementParameterParser.getValue(iterateConn,"__NUMBER_PARALLEL__") %>);
<% globalMap.put("lockWrite_<%=iterateNodeName%>", new Object[0]);
if(!hasParallelIterate){ int threadIdCounter_<%=iterateNodeName%> =0;
hasParallelIterate = true;
%>
final Object[] lockWrite = new Object[0];
int threadIdCounter =0;
<%
}
%>
<% <%
} }
String iterateNodeName = iterateConn.getTarget().getUniqueName();
%> %>
int NB_ITERATE_<%=iterateNodeName %> = 0; //for statistics int NB_ITERATE_<%=iterateNodeName %> = 0; //for statistics
<% <%

View File

@@ -111,7 +111,7 @@
} }
} }
<%=node.getUniqueName() %>Thread bt_<%=node.getUniqueName() %> = new <%=node.getUniqueName() %>Thread(globalMap<%=schemaInstanceDeclaration %>,threadIdCounter++); <%=node.getUniqueName() %>Thread bt_<%=node.getUniqueName() %> = new <%=node.getUniqueName() %>Thread(globalMap<%=schemaInstanceDeclaration %>,threadIdCounter_<%=node.getUniqueName()%>++);
mtp_<%=node.getUniqueName() %>.execute(bt_<%=node.getUniqueName() %>); mtp_<%=node.getUniqueName() %>.execute(bt_<%=node.getUniqueName() %>);
<% <%
@@ -134,4 +134,4 @@
}//3 }//3
}//2 }//2
}//1 }//1
%> %>

View File

@@ -67,7 +67,6 @@ for (IConnection iterateConn : iterateConnSet) { //1
rowList = rowList.substring(0, rowList.length()-1); rowList = rowList.substring(0, rowList.length()-1);
%> %>
class <%=node.getUniqueName() %>Thread extends TalendThread {//implements routines.system.TalendThreadPool.PropertySettable class <%=node.getUniqueName() %>Thread extends TalendThread {//implements routines.system.TalendThreadPool.PropertySettable
class ThreadedMap extends java.util.HashMap<String, Object> { class ThreadedMap extends java.util.HashMap<String, Object> {
private static final long serialVersionUID = 0L; private static final long serialVersionUID = 0L;

View File

@@ -868,7 +868,6 @@ public class CodeGenerator implements ICodeGenerator {
CodeGeneratorArgument argument = new CodeGeneratorArgument(); CodeGeneratorArgument argument = new CodeGeneratorArgument();
argument.setNode(node); argument.setNode(node);
argument.setAllMainSubTreeConnections(subProcess.getAllMainSubTreeConnections()); argument.setAllMainSubTreeConnections(subProcess.getAllMainSubTreeConnections());
argument.setSubTreeContainsParallelIterate(subProcess.subTreeContainsParallelIterate());
argument.setCodePart(part); argument.setCodePart(part);
argument.setStatistics(statistics); argument.setStatistics(statistics);
argument.setTrace(trace); argument.setTrace(trace);

View File

@@ -60,6 +60,7 @@ public class CodeGeneratorArgument {
private int pauseTime; private int pauseTime;
@Deprecated
private boolean subTreeContainsParallelIterate; private boolean subTreeContainsParallelIterate;
/** /**
@@ -277,10 +278,15 @@ public class CodeGeneratorArgument {
this.subTree = subTree; this.subTree = subTree;
} }
@Deprecated
/*
* use org.talend.core.model.process.AbstractNode.getParallelIterator()
*/
public boolean subTreeContainsParallelIterate() { public boolean subTreeContainsParallelIterate() {
return subTreeContainsParallelIterate; return subTreeContainsParallelIterate;
} }
@Deprecated
public void setSubTreeContainsParallelIterate(boolean subTreeContainsParallelIterate) { public void setSubTreeContainsParallelIterate(boolean subTreeContainsParallelIterate) {
this.subTreeContainsParallelIterate = subTreeContainsParallelIterate; this.subTreeContainsParallelIterate = subTreeContainsParallelIterate;
} }

View File

@@ -22,7 +22,6 @@ import java.util.Map;
import org.talend.core.model.process.AbstractNode; import org.talend.core.model.process.AbstractNode;
import org.talend.core.model.process.EConnectionType; import org.talend.core.model.process.EConnectionType;
import org.talend.core.model.process.ElementParameterParser;
import org.talend.core.model.process.IConnection; import org.talend.core.model.process.IConnection;
import org.talend.core.model.process.IConnectionCategory; import org.talend.core.model.process.IConnectionCategory;
import org.talend.core.model.process.INode; import org.talend.core.model.process.INode;
@@ -61,6 +60,7 @@ public class NodesSubTree {
List<IConnection> allMainSubTreeConnections = null; List<IConnection> allMainSubTreeConnections = null;
@Deprecated
boolean subTreeContainsParallelIterate = false; boolean subTreeContainsParallelIterate = false;
List<INode> mergeBranchStarts; List<INode> mergeBranchStarts;
@@ -251,11 +251,7 @@ public class NodesSubTree {
if (connection.getLineStyle().hasConnectionCategory(IConnectionCategory.MAIN)) { if (connection.getLineStyle().hasConnectionCategory(IConnectionCategory.MAIN)) {
if (!connection.getLineStyle().hasConnectionCategory(IConnectionCategory.USE_ITERATE)) { if (!connection.getLineStyle().hasConnectionCategory(IConnectionCategory.USE_ITERATE)) {
allMainSubTreeConnections.add(connection); allMainSubTreeConnections.add(connection);
} else { }
if (Boolean.TRUE.toString().equals(ElementParameterParser.getValue(connection, "__ENABLE_PARALLEL__"))) { //$NON-NLS-1$
subTreeContainsParallelIterate = true;
}
}
if (DEBUG) { if (DEBUG) {
System.out.print(" -> "); //$NON-NLS-1$ System.out.print(" -> "); //$NON-NLS-1$
} }
@@ -505,6 +501,10 @@ public class NodesSubTree {
this.allMainSubTreeConnections = allMainSubTreeConnections; this.allMainSubTreeConnections = allMainSubTreeConnections;
} }
@Deprecated
/*
* use org.talend.core.model.process.AbstractNode.getParallelIterator()
*/
public boolean subTreeContainsParallelIterate() { public boolean subTreeContainsParallelIterate() {
return subTreeContainsParallelIterate; return subTreeContainsParallelIterate;
} }

View File

@@ -10306,7 +10306,23 @@ public class SforceServiceStub extends org.apache.axis2.client.Stub implements
"urn:partner.soap.sforce.com:Soap:describeGlobalRequest"); "urn:partner.soap.sforce.com:Soap:describeGlobalRequest");
_operationClient.getOptions().setExceptionToBeThrownOnSOAPFault( _operationClient.getOptions().setExceptionToBeThrownOnSOAPFault(
true); true);
{
/*- ADD - START - BY cmeng - 20140901*/
/**
* https://jira.talendforge.org/browse/TDI-30366<br>
* 1. Because this API seems not support this case: server use HTTP Protocol 1.0(not support CHUNKED) while client use HTTP Protocol 1.1<br>
* , then client will throw exception(org.apache.axis2.AxisFault: Transport error: 411 Error: Length Required)<br>
* 2. If the new API can support this case, then this additional codes can be cancelled.
*
* Some information I searched on the net:<br>
* https://www.mail-archive.com/basedb-devel@lists.sourceforge.net/msg00309.html
* http://axis.apache.org/axis2/java/core/docs/http-transport.html
* http://en.wikipedia.org/wiki/Chunked_transfer_encoding
*/
_operationClient.getOptions().setProperty(
org.apache.axis2.transport.http.HTTPConstants.CHUNKED, "false");
/*- ADD - END - BY cmeng* - 20140901*/
}
addPropertyToOperationClient( addPropertyToOperationClient(
_operationClient, _operationClient,
org.apache.axis2.description.WSDL2Constants.ATTR_WHTTP_QUERY_PARAMETER_SEPARATOR, org.apache.axis2.description.WSDL2Constants.ATTR_WHTTP_QUERY_PARAMETER_SEPARATOR,
@@ -12816,7 +12832,23 @@ public class SforceServiceStub extends org.apache.axis2.client.Stub implements
"urn:partner.soap.sforce.com:Soap:describeSObjectRequest"); "urn:partner.soap.sforce.com:Soap:describeSObjectRequest");
_operationClient.getOptions().setExceptionToBeThrownOnSOAPFault( _operationClient.getOptions().setExceptionToBeThrownOnSOAPFault(
true); true);
{
/*- ADD - START - BY cmeng - 20140901*/
/**
* https://jira.talendforge.org/browse/TDI-30366<br>
* 1. Because this API seems not support this case: server use HTTP Protocol 1.0(not support CHUNKED) while client use HTTP Protocol 1.1<br>
* , then client will throw exception(org.apache.axis2.AxisFault: Transport error: 411 Error: Length Required)<br>
* 2. If the new API can support this case, then this additional codes can be cancelled.
*
* Some information I searched on the net:<br>
* https://www.mail-archive.com/basedb-devel@lists.sourceforge.net/msg00309.html
* http://axis.apache.org/axis2/java/core/docs/http-transport.html
* http://en.wikipedia.org/wiki/Chunked_transfer_encoding
*/
_operationClient.getOptions().setProperty(
org.apache.axis2.transport.http.HTTPConstants.CHUNKED, "false");
/*- ADD - END - BY cmeng - 20140901*/
}
addPropertyToOperationClient( addPropertyToOperationClient(
_operationClient, _operationClient,
org.apache.axis2.description.WSDL2Constants.ATTR_WHTTP_QUERY_PARAMETER_SEPARATOR, org.apache.axis2.description.WSDL2Constants.ATTR_WHTTP_QUERY_PARAMETER_SEPARATOR,

View File

@@ -12,6 +12,8 @@ imports="
org.talend.core.model.utils.NodeUtil org.talend.core.model.utils.NodeUtil
java.util.List java.util.List
org.talend.core.model.process.IProcess org.talend.core.model.process.IProcess
org.talend.core.model.process.IElementParameter
org.talend.core.model.process.AbstractNode
" "
%> %>
<%@ include file="../templates/Log4j/Log4jFileUtil.javajet"%> <%@ include file="../templates/Log4j/Log4jFileUtil.javajet"%>
@@ -457,9 +459,9 @@ if(("false").equals(ElementParameterParser.getValue(node,"__CSV_OPTION__"))) {
synchronized (multiThreadLockWrite) { synchronized (multiThreadLockWrite) {
<% <%
} }
if (codeGenArgument.subTreeContainsParallelIterate()) { if (((AbstractNode)node).getParallelIterator() != null) {
%> %>
synchronized (lockWrite) { synchronized ((Object[])globalMap.get("lockWrite_<%=((AbstractNode)node).getParallelIterator()%>")) {
<% <%
} }
if (isParallelize) { if (isParallelize) {
@@ -508,7 +510,7 @@ if(("false").equals(ElementParameterParser.getValue(node,"__CSV_OPTION__"))) {
} }
<% <%
} }
if (codeGenArgument.subTreeContainsParallelIterate()) { if (((AbstractNode)node).getParallelIterator() != null) {
%> %>
} }
<% <%
@@ -892,9 +894,9 @@ if(("false").equals(ElementParameterParser.getValue(node,"__CSV_OPTION__"))) {
synchronized (multiThreadLockWrite) { synchronized (multiThreadLockWrite) {
<% <%
} }
if (codeGenArgument.subTreeContainsParallelIterate()) { if (((AbstractNode)node).getParallelIterator() != null) {
%> %>
synchronized (lockWrite) { synchronized ((Object[])globalMap.get("lockWrite_<%=((AbstractNode)node).getParallelIterator()%>")) {
<% <%
} }
if (isParallelize) { if (isParallelize) {
@@ -943,7 +945,7 @@ if(("false").equals(ElementParameterParser.getValue(node,"__CSV_OPTION__"))) {
} }
<% <%
} }
if (codeGenArgument.subTreeContainsParallelIterate()) { if (((AbstractNode)node).getParallelIterator() != null) {
%> %>
} }
<% <%
@@ -1119,4 +1121,4 @@ resourceMap.put("nb_line_<%=cid%>", nb_line_<%=cid%>);
<%}else{%> <%}else{%>
resourceMap.put("file<%=cid%>", file<%=cid%>); resourceMap.put("file<%=cid%>", file<%=cid%>);
<%}%> <%}%>
<%}%> <%}%>

View File

@@ -6,6 +6,8 @@
org.talend.core.model.process.ElementParameterParser org.talend.core.model.process.ElementParameterParser
java.util.List java.util.List
org.talend.core.model.process.IProcess org.talend.core.model.process.IProcess
org.talend.core.model.utils.NodeUtil
org.talend.core.model.process.AbstractNode
" "
%> %>
<%@ include file="../templates/Log4j/Log4jFileUtil.javajet"%> <%@ include file="../templates/Log4j/Log4jFileUtil.javajet"%>
@@ -43,9 +45,9 @@ if ((metadatas!=null)&&(metadatas.size()>0)) {
synchronized (multiThreadLockWrite) { synchronized (multiThreadLockWrite) {
<% <%
} }
if (codeGenArgument.subTreeContainsParallelIterate()) { if (((AbstractNode)node).getParallelIterator() != null) {
%> %>
synchronized (lockWrite) { synchronized ((Object[])globalMap.get("lockWrite_<%=((AbstractNode)node).getParallelIterator()%>")) {
<% <%
} }
if (isParallelize) { if (isParallelize) {
@@ -138,7 +140,7 @@ if ((metadatas!=null)&&(metadatas.size()>0)) {
} }
<% <%
} }
if (codeGenArgument.subTreeContainsParallelIterate()) { if (((AbstractNode)node).getParallelIterator() != null) {
%> %>
} }
<% <%

View File

@@ -6,6 +6,8 @@
org.talend.core.model.process.ElementParameterParser org.talend.core.model.process.ElementParameterParser
java.util.List java.util.List
org.talend.core.model.process.IProcess org.talend.core.model.process.IProcess
org.talend.core.model.utils.NodeUtil
org.talend.core.model.process.AbstractNode
" "
%> %>
@@ -43,9 +45,9 @@ if ((metadatas!=null)&&(metadatas.size()>0)) {
synchronized (multiThreadLockWrite) { synchronized (multiThreadLockWrite) {
<% <%
} }
if (codeGenArgument.subTreeContainsParallelIterate()) { if (((AbstractNode)node).getParallelIterator() != null) {
%> %>
synchronized (lockWrite) { synchronized ((Object[])globalMap.get("lockWrite_<%=((AbstractNode)node).getParallelIterator()%>")) {
<% <%
} }
if (isParallelize) { if (isParallelize) {
@@ -140,7 +142,7 @@ if ((metadatas!=null)&&(metadatas.size()>0)) {
} }
<% <%
} }
if (codeGenArgument.subTreeContainsParallelIterate()) { if (((AbstractNode)node).getParallelIterator() != null) {
%> %>
} }
<% <%

View File

@@ -10,6 +10,8 @@ imports="
java.util.List java.util.List
org.talend.core.model.metadata.types.JavaTypesManager org.talend.core.model.metadata.types.JavaTypesManager
org.talend.core.model.metadata.types.JavaType org.talend.core.model.metadata.types.JavaType
org.talend.core.model.utils.NodeUtil
org.talend.core.model.process.AbstractNode
" "
%> %>
@@ -80,9 +82,9 @@ if(("false").equals(ElementParameterParser.getValue(node,"__CSV_OPTION__"))) {
synchronized (multiThreadLockWrite) { synchronized (multiThreadLockWrite) {
<% <%
} }
if (codeGenArgument.subTreeContainsParallelIterate()) { if (((AbstractNode)node).getParallelIterator() != null) {
%> %>
synchronized (lockWrite) { synchronized ((Object[])globalMap.get("lockWrite_<%=((AbstractNode)node).getParallelIterator()%>")) {
<% <%
} }
if (isParallelize) { if (isParallelize) {
@@ -135,7 +137,7 @@ if(("false").equals(ElementParameterParser.getValue(node,"__CSV_OPTION__"))) {
} }
<% <%
} }
if (codeGenArgument.subTreeContainsParallelIterate()) { if (((AbstractNode)node).getParallelIterator() != null) {
%> %>
} }
<% <%
@@ -226,9 +228,9 @@ if(("false").equals(ElementParameterParser.getValue(node,"__CSV_OPTION__"))) {
synchronized (multiThreadLockWrite) { synchronized (multiThreadLockWrite) {
<% <%
} }
if (codeGenArgument.subTreeContainsParallelIterate()) { if (((AbstractNode)node).getParallelIterator() != null) {
%> %>
synchronized (lockWrite) { synchronized ((Object[])globalMap.get("lockWrite_<%=((AbstractNode)node).getParallelIterator()%>")) {
<% <%
} }
if (isParallelize) { if (isParallelize) {
@@ -349,7 +351,7 @@ if(("false").equals(ElementParameterParser.getValue(node,"__CSV_OPTION__"))) {
} }
<% <%
} }
if (codeGenArgument.subTreeContainsParallelIterate()) { if (((AbstractNode)node).getParallelIterator() != null) {
%> %>
} }
<% <%
@@ -404,6 +406,8 @@ if(("false").equals(ElementParameterParser.getValue(node,"__CSV_OPTION__"))) {
boolean compress = ("true").equals(ElementParameterParser.getValue(node,"__COMPRESS__")); boolean compress = ("true").equals(ElementParameterParser.getValue(node,"__COMPRESS__"));
boolean useOSLineSeparator = ("true").equals(ElementParameterParser.getValue(node,"__OS_LINE_SEPARATOR_AS_ROW_SEPARATOR__"));
boolean hasDynamic = metadata.isDynamicSchema(); boolean hasDynamic = metadata.isDynamicSchema();
IMetadataColumn dynamicCol = metadata.getDynamicColumn(); IMetadataColumn dynamicCol = metadata.getDynamicColumn();
if(hasDynamic){ if(hasDynamic){
@@ -424,9 +428,9 @@ if(("false").equals(ElementParameterParser.getValue(node,"__CSV_OPTION__"))) {
synchronized (multiThreadLockWrite) { synchronized (multiThreadLockWrite) {
<% <%
} }
if (codeGenArgument.subTreeContainsParallelIterate()) { if (((AbstractNode)node).getParallelIterator() != null) {
%> %>
synchronized (lockWrite) { synchronized ((Object[])globalMap.get("lockWrite_<%=((AbstractNode)node).getParallelIterator()%>")) {
<% <%
} }
if (isParallelize) { if (isParallelize) {
@@ -495,7 +499,7 @@ if(("false").equals(ElementParameterParser.getValue(node,"__CSV_OPTION__"))) {
} }
<% <%
} }
if (codeGenArgument.subTreeContainsParallelIterate()) { if (((AbstractNode)node).getParallelIterator() != null) {
%> %>
} }
<% <%
@@ -583,9 +587,9 @@ if(("false").equals(ElementParameterParser.getValue(node,"__CSV_OPTION__"))) {
synchronized (multiThreadLockWrite) { synchronized (multiThreadLockWrite) {
<% <%
} }
if (codeGenArgument.subTreeContainsParallelIterate()) { if (((AbstractNode)node).getParallelIterator() != null) {
%> %>
synchronized (lockWrite) { synchronized ((Object[])globalMap.get("lockWrite_<%=((AbstractNode)node).getParallelIterator()%>")) {
<% <%
} }
if (isParallelize) { if (isParallelize) {
@@ -624,8 +628,25 @@ if(("false").equals(ElementParameterParser.getValue(node,"__CSV_OPTION__"))) {
new java.io.FileOutputStream(fullName_<%=cid%> + splitedFileNo_<%=cid%> + extension_<%=cid%>, <%=isAppend%>),<%=encoding%>))); new java.io.FileOutputStream(fullName_<%=cid%> + splitedFileNo_<%=cid%> + extension_<%=cid%>, <%=isAppend%>),<%=encoding%>)));
CsvWriter<%=cid%>.setSeparator(csvSettings_<%=cid %>.getFieldDelim()); CsvWriter<%=cid%>.setSeparator(csvSettings_<%=cid %>.getFieldDelim());
<%}%> <%}%>
if(csvSettings_<%=cid %>.getRowDelim()!='\r' && csvSettings_<%=cid %>.getRowDelim()!='\n')
CsvWriter<%=cid%>.setLineEnd(""+csvSettings_<%=cid %>.getRowDelim()); <%
if(!useOSLineSeparator) {
%>
if(csvSettings_<%=cid%>.isUseCRLFRecordDelimiter()) {
CsvWriter<%=cid%>.setLineEnd("\r\n");
} else {
CsvWriter<%=cid%>.setLineEnd(""+csvSettings_<%=cid%>.getRowDelim());
}
<%
} else {
%>
if(!csvSettings_<%=cid%>.isUseCRLFRecordDelimiter() && csvSettings_<%=cid%>.getRowDelim()!='\r' && csvSettings_<%=cid%>.getRowDelim()!='\n') {
CsvWriter<%=cid%>.setLineEnd(""+csvSettings_<%=cid%>.getRowDelim());
}
<%
}
%>
//set header. //set header.
<% <%
if(isIncludeHeader && !isAppend){ if(isIncludeHeader && !isAppend){
@@ -735,7 +756,7 @@ if(("false").equals(ElementParameterParser.getValue(node,"__CSV_OPTION__"))) {
} }
<% <%
} }
if (codeGenArgument.subTreeContainsParallelIterate()) { if (((AbstractNode)node).getParallelIterator() != null) {
%> %>
} }
<% <%

View File

@@ -5,6 +5,8 @@
org.talend.designer.codegen.config.CodeGeneratorArgument org.talend.designer.codegen.config.CodeGeneratorArgument
org.talend.core.model.process.ElementParameterParser org.talend.core.model.process.ElementParameterParser
java.util.List java.util.List
org.talend.core.model.utils.NodeUtil
org.talend.core.model.process.AbstractNode
" "
%> %>
<% <%
@@ -30,9 +32,9 @@
synchronized (multiThreadLockWrite) { synchronized (multiThreadLockWrite) {
<% <%
} }
if (codeGenArgument.subTreeContainsParallelIterate()) { if (((AbstractNode)node).getParallelIterator() != null) {
%> %>
synchronized (lockWrite) { synchronized ((Object[])globalMap.get("lockWrite_<%=((AbstractNode)node).getParallelIterator()%>")) {
<% <%
} }
if (isParallelize) { if (isParallelize) {
@@ -57,7 +59,7 @@
} }
<% <%
} }
if (codeGenArgument.subTreeContainsParallelIterate()) { if (((AbstractNode)node).getParallelIterator() != null) {
%> %>
} }
<% <%

View File

@@ -7,8 +7,10 @@
org.talend.core.model.process.IConnectionCategory org.talend.core.model.process.IConnectionCategory
org.talend.core.model.process.ElementParameterParser org.talend.core.model.process.ElementParameterParser
org.talend.designer.codegen.config.CodeGeneratorArgument org.talend.designer.codegen.config.CodeGeneratorArgument
org.talend.core.model.utils.NodeUtil
java.util.List java.util.List
java.util.Map java.util.Map
org.talend.core.model.process.AbstractNode
" "
%> %>
<% <%
@@ -70,9 +72,9 @@ if ((metadatas!=null)&&(metadatas.size()>0)) {
synchronized (multiThreadLockWrite) { synchronized (multiThreadLockWrite) {
<% <%
} }
if (codeGenArgument.subTreeContainsParallelIterate()) { if (((AbstractNode)node).getParallelIterator() != null) {
%> %>
synchronized (lockWrite) { synchronized ((Object[])globalMap.get("lockWrite_<%=((AbstractNode)node).getParallelIterator()%>")) {
<% <%
} }
if (isParallelize) { if (isParallelize) {
@@ -96,7 +98,7 @@ if ((metadatas!=null)&&(metadatas.size()>0)) {
} }
<% <%
} }
if (codeGenArgument.subTreeContainsParallelIterate()) { if (((AbstractNode)node).getParallelIterator() != null) {
%> %>
} }
<% <%

View File

@@ -22,6 +22,7 @@ imports="
boolean validate = ("true").equals(ElementParameterParser.getValue(node,"__VALIDATE__")); boolean validate = ("true").equals(ElementParameterParser.getValue(node,"__VALIDATE__"));
boolean isGenerateId = ("true").equals(ElementParameterParser.getValue(node,"__GENERATE_ID__")); boolean isGenerateId = ("true").equals(ElementParameterParser.getValue(node,"__GENERATE_ID__"));
boolean insertOnly = ("true").equals(ElementParameterParser.getValue(node,"__INSERT_ONLY__"));
boolean useTransaction = ("true").equals(ElementParameterParser.getValue(node,"__USE_TRANSACTION__")); boolean useTransaction = ("true").equals(ElementParameterParser.getValue(node,"__USE_TRANSACTION__"));
String transactionProvider = ElementParameterParser.getValue(node,"__TRANSACTION_PROVIDER__"); String transactionProvider = ElementParameterParser.getValue(node,"__TRANSACTION_PROVIDER__");
@@ -41,6 +42,6 @@ if(mdmTransaction_<%=cid%>!=null) {
} }
<%}%> <%}%>
bulkloadClient_<%=cid %>.startThreadCount(); bulkloadClient_<%=cid %>.startThreadCount();
bulkloadClient_<%=cid %>.setOptions(new org.talend.mdm.bulkload.client.BulkloadOptions(<%=isGenerateId %>, <%=validate %>, <%=arraySize%>)); bulkloadClient_<%=cid %>.setOptions(new org.talend.mdm.bulkload.client.BulkloadOptions(<%=isGenerateId %>, <%=validate %>, <%=arraySize%>, <%=insertOnly%>));
int count_<%=cid%> = 0; int count_<%=cid%> = 0;
org.talend.mdm.bulkload.client.InputStreamMerger inputStreamMerger_<%=cid%> = null; org.talend.mdm.bulkload.client.InputStreamMerger inputStreamMerger_<%=cid%> = null;

View File

@@ -0,0 +1,15 @@
<%@ jet
imports="
org.talend.core.model.process.INode
org.talend.designer.codegen.config.CodeGeneratorArgument"
%>
<%
CodeGeneratorArgument codeGenArgument = (CodeGeneratorArgument) argument;
INode node = (INode)codeGenArgument.getArgument();
String cid = node.getUniqueName();
%>
Object o<%=cid %> = resourceMap.get("mdmBulkStream<%=cid %>");
if(o<%=cid %> != null){
org.talend.mdm.bulkload.client.InputStreamMerger stream = (org.talend.mdm.bulkload.client.InputStreamMerger)o<%=cid %>;
stream.clean();
}

View File

@@ -86,6 +86,10 @@
<DEFAULT>false</DEFAULT> <DEFAULT>false</DEFAULT>
</PARAMETER> </PARAMETER>
<PARAMETER NAME="INSERT_ONLY" FIELD="CHECK" NUM_ROW="50">
<DEFAULT>false</DEFAULT>
</PARAMETER>
<PARAMETER NAME="MASS_LEVEL" FIELD="TEXT" NUM_ROW="60" <PARAMETER NAME="MASS_LEVEL" FIELD="TEXT" NUM_ROW="60"
REQUIRED="true"> REQUIRED="true">
<DEFAULT>500</DEFAULT> <DEFAULT>500</DEFAULT>

View File

@@ -29,6 +29,7 @@ if (count_<%=cid%> % <%=arraySize%> == 0) {
if(inputStreamMerger_<%=cid%> != null) if(inputStreamMerger_<%=cid%> != null)
inputStreamMerger_<%=cid%>.close(); inputStreamMerger_<%=cid%>.close();
inputStreamMerger_<%=cid%> = bulkloadClient_<%=cid %>.load(); inputStreamMerger_<%=cid%> = bulkloadClient_<%=cid %>.load();
resourceMap.put("mdmBulkStream<%=cid %>", inputStreamMerger_<%=cid%>);
} }
if(<%=conn.getName()%>.<%=xmlField %>!=null){ if(<%=conn.getName()%>.<%=xmlField %>!=null){

View File

@@ -8,6 +8,7 @@ DATACONCEPT.NAME=Entity
XMLFIELD.NAME=XML Field XMLFIELD.NAME=XML Field
VALIDATE.NAME=Validate VALIDATE.NAME=Validate
GENERATE_ID.NAME=Generate ID GENERATE_ID.NAME=Generate ID
INSERT_ONLY.NAME=Insert only
MASS_LEVEL.NAME=Commit size MASS_LEVEL.NAME=Commit size
HELP=org.talend.help.tMDMOutput HELP=org.talend.help.tMDMOutput
LONG_NAME=Output an xml structure to the talend MDM web service LONG_NAME=Output an xml structure to the talend MDM web service

View File

@@ -8,6 +8,7 @@ DATACONCEPT.NAME=Entity
XMLFIELD.NAME=XML Field XMLFIELD.NAME=XML Field
VALIDATE.NAME=Validate VALIDATE.NAME=Validate
GENERATE_ID.NAME=Generate ID GENERATE_ID.NAME=Generate ID
INSERT_ONLY.NAME=Insert only
MASS_LEVEL.NAME=Commit size MASS_LEVEL.NAME=Commit size
HELP=org.talend.help.tMDMOutput HELP=org.talend.help.tMDMOutput
LONG_NAME=Output an xml structure to the talend MDM web service LONG_NAME=Output an xml structure to the talend MDM web service

View File

@@ -177,8 +177,10 @@ if ((metadatas != null) && (metadatas.size() > 0)) {//1
boolean continueFlag_<%=cid%> = true; boolean continueFlag_<%=cid%> = true;
int totalCount_<%=cid%> = -1;<%//For TDI-26039%> int totalCount_<%=cid%> = -1;<%//For TDI-26039%>
int totalPage_<%=cid %> = -1;
int pageNumber_<%=cid %> = 0;
while (continueFlag_<%=cid%>) { while (continueFlag_<%=cid%>) {
pageNumber_<%=cid %>++;
getitems_<%=cid%>=new org.talend.mdm.webservice.WSGetItems(dataCluster_<%=cid%>, <%=concept%>, wsItem_<%=cid%>, getitems_<%=cid%>=new org.talend.mdm.webservice.WSGetItems(dataCluster_<%=cid%>, <%=concept%>, wsItem_<%=cid%>,
<%=spellThrehold%>, //spell Threshold <%=spellThrehold%>, //spell Threshold
skip_<%=cid%> + retrievedCount_<%=cid%>, skip_<%=cid%> + retrievedCount_<%=cid%>,
@@ -188,6 +190,7 @@ if ((metadatas != null) && (metadatas.size() > 0)) {//1
items_<%=cid%> = xtentisWS_<%=cid%>.getItems(getitems_<%=cid%>); items_<%=cid%> = xtentisWS_<%=cid%>.getItems(getitems_<%=cid%>);
if(totalCount_<%=cid%> < 0){ if(totalCount_<%=cid%> < 0){
totalCount_<%=cid%> = Integer.valueOf(items_<%=cid%>[0].replaceAll("<totalCount>", "").replaceAll("</totalCount>", "")); totalCount_<%=cid%> = Integer.valueOf(items_<%=cid%>[0].replaceAll("<totalCount>", "").replaceAll("</totalCount>", ""));
totalPage_<%=cid %> = totalCount_<%=cid%>/recordsPerPage_<%=cid%> +1;
} }
} catch(java.lang.Exception e) { } catch(java.lang.Exception e) {
<%if(dieOnError) {%> <%if(dieOnError) {%>
@@ -197,7 +200,7 @@ if ((metadatas != null) && (metadatas.size() > 0)) {//1
<% } %> <% } %>
} }
retrievedCount_<%=cid%> += (items_<%=cid%>.length - 1); retrievedCount_<%=cid%> += (items_<%=cid%>.length - 1);
if (totalCount_<%=cid%> == retrievedCount_<%=cid%> || recordsPerPage_<%=cid%> == -1 || (items_<%=cid%>.length - 1) < readRecordsSize_<%=cid%> || limit_<%=cid%> == retrievedCount_<%=cid%>) { if (totalCount_<%=cid%> == retrievedCount_<%=cid%> || recordsPerPage_<%=cid%> == -1 || (items_<%=cid%>.length - 1) < 1 || pageNumber_<%=cid %> == totalPage_<%=cid %> || limit_<%=cid%> == retrievedCount_<%=cid%>) {
continueFlag_<%=cid%> = false; continueFlag_<%=cid%> = false;
} else if (limit_<%=cid%> != -1 && limit_<%=cid%> < retrievedCount_<%=cid%> + readRecordsSize_<%=cid%>) { } else if (limit_<%=cid%> != -1 && limit_<%=cid%> < retrievedCount_<%=cid%> + readRecordsSize_<%=cid%>) {
readRecordsSize_<%=cid%> = limit_<%=cid%> - retrievedCount_<%=cid%>; readRecordsSize_<%=cid%> = limit_<%=cid%> - retrievedCount_<%=cid%>;

View File

@@ -842,4 +842,6 @@ PaserRuleSelectionDialog.RULE_VALUE=Rule Value
PasswordController.NewPassword=Enter a new password PasswordController.NewPassword=Enter a new password
PasswordController.NoteConvention=Note: Follow the usual Java convention which requires text to be surrounded by double quotes. PasswordController.NoteConvention=Note: Follow the usual Java convention which requires text to be surrounded by double quotes.
NodeSelectedDialog.title=Select node NodeSelectedDialog.title=Select node
NodeSelectedDialog.msg=Please select a node. NodeSelectedDialog.msg=Please select a node.
SaveRoutineContentError.ErrorTitile=Error
SaveRoutineContentError.ErrorContent=Save Routine Failed!

View File

@@ -158,6 +158,7 @@ public class ElementParameter implements IElementParameter {
* *
* @see org.talend.designer.core.model.components.IDesignerElementParameter#setName(java.lang.String) * @see org.talend.designer.core.model.components.IDesignerElementParameter#setName(java.lang.String)
*/ */
@Override
public void setName(final String s) { public void setName(final String s) {
name = s; name = s;
} }
@@ -167,10 +168,12 @@ public class ElementParameter implements IElementParameter {
* *
* @see org.talend.designer.core.model.components.IDesignerElementParameter#getVariableName() * @see org.talend.designer.core.model.components.IDesignerElementParameter#getVariableName()
*/ */
@Override
public String getVariableName() { public String getVariableName() {
return "__" + name + "__"; //$NON-NLS-1$ //$NON-NLS-2$ return "__" + name + "__"; //$NON-NLS-1$ //$NON-NLS-2$
} }
@Override
public void setCategory(final EComponentCategory cat) { public void setCategory(final EComponentCategory cat) {
category = cat; category = cat;
} }
@@ -180,6 +183,7 @@ public class ElementParameter implements IElementParameter {
* *
* @see org.talend.designer.core.model.components.IDesignerElementParameter#getCategory() * @see org.talend.designer.core.model.components.IDesignerElementParameter#getCategory()
*/ */
@Override
public EComponentCategory getCategory() { public EComponentCategory getCategory() {
return this.category; return this.category;
} }
@@ -189,6 +193,7 @@ public class ElementParameter implements IElementParameter {
* *
* @see org.talend.designer.core.model.components.IDesignerElementParameter#setDisplayName(java.lang.String) * @see org.talend.designer.core.model.components.IDesignerElementParameter#setDisplayName(java.lang.String)
*/ */
@Override
public void setDisplayName(final String s) { public void setDisplayName(final String s) {
displayName = s; displayName = s;
} }
@@ -199,6 +204,7 @@ public class ElementParameter implements IElementParameter {
* @seeorg.talend.designer.core.model.components.IDesignerElementParameter#setField(org.talend.core.model.designer. * @seeorg.talend.designer.core.model.components.IDesignerElementParameter#setField(org.talend.core.model.designer.
* EParameterFieldType) * EParameterFieldType)
*/ */
@Override
public void setFieldType(final EParameterFieldType type) { public void setFieldType(final EParameterFieldType type) {
field = type; field = type;
} }
@@ -208,10 +214,12 @@ public class ElementParameter implements IElementParameter {
* *
* @see org.talend.designer.core.model.components.IDesignerElementParameter#setValue(java.lang.Object) * @see org.talend.designer.core.model.components.IDesignerElementParameter#setValue(java.lang.Object)
*/ */
@Override
public void setValue(final Object o) { public void setValue(final Object o) {
value = o; value = o;
} }
@Override
public String getName() { public String getName() {
return name; return name;
} }
@@ -221,6 +229,7 @@ public class ElementParameter implements IElementParameter {
* *
* @see org.talend.designer.core.model.components.IDesignerElementParameter#getDisplayName() * @see org.talend.designer.core.model.components.IDesignerElementParameter#getDisplayName()
*/ */
@Override
public String getDisplayName() { public String getDisplayName() {
return displayName; return displayName;
} }
@@ -230,6 +239,7 @@ public class ElementParameter implements IElementParameter {
* *
* @see org.talend.designer.core.model.components.IDesignerElementParameter#getField() * @see org.talend.designer.core.model.components.IDesignerElementParameter#getField()
*/ */
@Override
public EParameterFieldType getFieldType() { public EParameterFieldType getFieldType() {
return field; return field;
} }
@@ -239,26 +249,32 @@ public class ElementParameter implements IElementParameter {
* *
* @see org.talend.designer.core.model.components.IDesignerElementParameter#getValue() * @see org.talend.designer.core.model.components.IDesignerElementParameter#getValue()
*/ */
@Override
public Object getValue() { public Object getValue() {
return value; return value;
} }
@Override
public void setListItemsDisplayName(final String[] list) { public void setListItemsDisplayName(final String[] list) {
itemsDisplayName = list; itemsDisplayName = list;
} }
@Override
public String[] getListItemsDisplayName() { public String[] getListItemsDisplayName() {
return itemsDisplayName; return itemsDisplayName;
} }
@Override
public void setListItemsDisplayCodeName(final String[] list) { public void setListItemsDisplayCodeName(final String[] list) {
itemsDisplayCodeName = list; itemsDisplayCodeName = list;
} }
@Override
public String[] getListItemsDisplayCodeName() { public String[] getListItemsDisplayCodeName() {
return itemsDisplayCodeName; return itemsDisplayCodeName;
} }
@Override
public void setListItemsValue(final Object[] list) { public void setListItemsValue(final Object[] list) {
if (this.getFieldType() == EParameterFieldType.TABLE) { if (this.getFieldType() == EParameterFieldType.TABLE) {
EParameterFieldType.AS400_CHECK.getClass(); EParameterFieldType.AS400_CHECK.getClass();
@@ -266,42 +282,52 @@ public class ElementParameter implements IElementParameter {
itemsValue = list; itemsValue = list;
} }
@Override
public Object[] getListItemsValue() { public Object[] getListItemsValue() {
return itemsValue; return itemsValue;
} }
@Override
public void setDefaultClosedListValue(Object o) { public void setDefaultClosedListValue(Object o) {
defaultClosedListValue = o; defaultClosedListValue = o;
} }
@Override
public Object getDefaultClosedListValue() { public Object getDefaultClosedListValue() {
return defaultClosedListValue; return defaultClosedListValue;
} }
@Override
public void setListRepositoryItems(final String[] list) { public void setListRepositoryItems(final String[] list) {
itemsRepository = list; itemsRepository = list;
} }
@Override
public String[] getListRepositoryItems() { public String[] getListRepositoryItems() {
return itemsRepository; return itemsRepository;
} }
@Override
public void setListItemsShowIf(String[] list) { public void setListItemsShowIf(String[] list) {
itemsShowIf = list; itemsShowIf = list;
} }
@Override
public String[] getListItemsShowIf() { public String[] getListItemsShowIf() {
return itemsShowIf; return itemsShowIf;
} }
@Override
public void setListItemsNotShowIf(String[] list) { public void setListItemsNotShowIf(String[] list) {
itemsNotShowIf = list; itemsNotShowIf = list;
} }
@Override
public String[] getListItemsNotShowIf() { public String[] getListItemsNotShowIf() {
return itemsNotShowIf; return itemsNotShowIf;
} }
@Override
public int getIndexOfItemFromList(String item) { public int getIndexOfItemFromList(String item) {
int index = -1; int index = -1;
boolean found = false; boolean found = false;
@@ -324,22 +350,27 @@ public class ElementParameter implements IElementParameter {
return index; return index;
} }
@Override
public int getNbLines() { public int getNbLines() {
return this.nbLines; return this.nbLines;
} }
@Override
public void setNbLines(final int nbLines) { public void setNbLines(final int nbLines) {
this.nbLines = nbLines; this.nbLines = nbLines;
} }
@Override
public int getNumRow() { public int getNumRow() {
return this.numRow; return this.numRow;
} }
@Override
public void setNumRow(final int numRow) { public void setNumRow(final int numRow) {
this.numRow = numRow; this.numRow = numRow;
} }
@Override
public boolean isReadOnly() { public boolean isReadOnly() {
if (element != null) { if (element != null) {
return (this.readOnly || element.isReadOnly()); return (this.readOnly || element.isReadOnly());
@@ -351,54 +382,67 @@ public class ElementParameter implements IElementParameter {
return this.readOnly; return this.readOnly;
} }
@Override
public void setReadOnly(final boolean readOnly) { public void setReadOnly(final boolean readOnly) {
this.readOnly = readOnly; this.readOnly = readOnly;
} }
@Override
public boolean isRequired() { public boolean isRequired() {
return this.required; return this.required;
} }
@Override
public void setRequired(final boolean required) { public void setRequired(final boolean required) {
this.required = required; this.required = required;
} }
@Override
public void setShow(final boolean show) { public void setShow(final boolean show) {
this.show = show; this.show = show;
} }
@Override
public String getRepositoryValue() { public String getRepositoryValue() {
return this.repositoryValue; return this.repositoryValue;
} }
@Override
public void setRepositoryValue(String repositoryValue) { public void setRepositoryValue(String repositoryValue) {
this.repositoryValue = repositoryValue; this.repositoryValue = repositoryValue;
} }
@Override
public boolean isRepositoryValueUsed() { public boolean isRepositoryValueUsed() {
return this.repositoryValueUsed; return this.repositoryValueUsed;
} }
@Override
public void setRepositoryValueUsed(boolean repositoryUsed) { public void setRepositoryValueUsed(boolean repositoryUsed) {
this.repositoryValueUsed = repositoryUsed; this.repositoryValueUsed = repositoryUsed;
} }
@Override
public String getShowIf() { public String getShowIf() {
return showIf; return showIf;
} }
@Override
public void setShowIf(String showIf) { public void setShowIf(String showIf) {
this.showIf = showIf; this.showIf = showIf;
} }
@Override
public String getNotShowIf() { public String getNotShowIf() {
return notShowIf; return notShowIf;
} }
@Override
public void setNotShowIf(String notShowIf) { public void setNotShowIf(String notShowIf) {
this.notShowIf = notShowIf; this.notShowIf = notShowIf;
} }
@Override
public boolean isShow(List<? extends IElementParameter> listParam) { public boolean isShow(List<? extends IElementParameter> listParam) {
boolean showParameter = false; boolean showParameter = false;
@@ -415,6 +459,7 @@ public class ElementParameter implements IElementParameter {
} }
// added by dlin for feature TDI-22421 // added by dlin for feature TDI-22421
@Override
public boolean isRequired(List<? extends IElementParameter> listParam) { public boolean isRequired(List<? extends IElementParameter> listParam) {
boolean requiredParameter = false; boolean requiredParameter = false;
if (this.requiredIF != null && !required) { if (this.requiredIF != null && !required) {
@@ -425,6 +470,7 @@ public class ElementParameter implements IElementParameter {
return requiredParameter; return requiredParameter;
} }
@Override
public boolean isShow(String conditionShowIf, String conditionNotShowIf, List<? extends IElementParameter> listParam) { public boolean isShow(String conditionShowIf, String conditionNotShowIf, List<? extends IElementParameter> listParam) {
boolean showParameter = false; boolean showParameter = false;
@@ -454,19 +500,29 @@ public class ElementParameter implements IElementParameter {
return showParameter; return showParameter;
} }
@Override
public List<IElementParameterDefaultValue> getDefaultValues() { public List<IElementParameterDefaultValue> getDefaultValues() {
return this.defaultValues; return this.defaultValues;
} }
@Override
public void setDefaultValues(List<IElementParameterDefaultValue> defaultValues) { public void setDefaultValues(List<IElementParameterDefaultValue> defaultValues) {
this.defaultValues = defaultValues; this.defaultValues = defaultValues;
} }
@Override
public void setValueToDefault(List<? extends IElementParameter> listParam) { public void setValueToDefault(List<? extends IElementParameter> listParam) {
for (IElementParameterDefaultValue defaultValue : defaultValues) { if (defaultValues == null) {
return;
}
int size = defaultValues.size();
// a performance improvement, and keep the result like before.
// for (IElementParameterDefaultValue defaultValue : defaultValues) {
for (int i = size - 1; 0 <= i; i--) {
IElementParameterDefaultValue iDefaultValue = defaultValues.get(i);
boolean setDefaultValue = false; boolean setDefaultValue = false;
String conditionIf = defaultValue.getIfCondition(); String conditionIf = iDefaultValue.getIfCondition();
String conditionNotIf = defaultValue.getNotIfCondition(); String conditionNotIf = iDefaultValue.getNotIfCondition();
if ((conditionIf != null) || (conditionNotIf != null)) { if ((conditionIf != null) || (conditionNotIf != null)) {
if (conditionIf != null) { if (conditionIf != null) {
@@ -477,26 +533,31 @@ public class ElementParameter implements IElementParameter {
} }
if (setDefaultValue) { if (setDefaultValue) {
if (this.field.equals(EParameterFieldType.CHECK) || this.field.equals(EParameterFieldType.RADIO)) { if (this.field.equals(EParameterFieldType.CHECK) || this.field.equals(EParameterFieldType.RADIO)) {
setValue(new Boolean(defaultValue.getDefaultValue().toString())); setValue(new Boolean(iDefaultValue.getDefaultValue().toString()));
} else { } else {
setValue(defaultValue.getDefaultValue()); setValue(iDefaultValue.getDefaultValue());
} }
break;
} }
} }
} }
@Override
public IElement getElement() { public IElement getElement() {
return element; return element;
} }
@Override
public void setElement(IElement element) { public void setElement(IElement element) {
this.element = element; this.element = element;
} }
@Override
public boolean isBasedOnSchema() { public boolean isBasedOnSchema() {
return basedOnSchema; return basedOnSchema;
} }
@Override
public void setBasedOnSchema(boolean basedOnSchema) { public void setBasedOnSchema(boolean basedOnSchema) {
this.basedOnSchema = basedOnSchema; this.basedOnSchema = basedOnSchema;
} }
@@ -509,10 +570,12 @@ public class ElementParameter implements IElementParameter {
return name + ": " + value.toString(); //$NON-NLS-1$ return name + ": " + value.toString(); //$NON-NLS-1$
} }
@Override
public String getFilter() { public String getFilter() {
return filter; return filter;
} }
@Override
public void setFilter(String filter) { public void setFilter(String filter) {
this.filter = filter; this.filter = filter;
} }
@@ -522,6 +585,7 @@ public class ElementParameter implements IElementParameter {
* *
* @return the noCheck * @return the noCheck
*/ */
@Override
public boolean isNoCheck() { public boolean isNoCheck() {
IPreferenceStore preferenceStore = DesignerPlugin.getDefault().getPreferenceStore(); IPreferenceStore preferenceStore = DesignerPlugin.getDefault().getPreferenceStore();
@@ -542,6 +606,7 @@ public class ElementParameter implements IElementParameter {
* *
* @param noCheck the noCheck to set * @param noCheck the noCheck to set
*/ */
@Override
public void setNoCheck(boolean noCheck) { public void setNoCheck(boolean noCheck) {
this.noCheck = noCheck; this.noCheck = noCheck;
} }
@@ -551,6 +616,7 @@ public class ElementParameter implements IElementParameter {
* *
* @return the context * @return the context
*/ */
@Override
public String getContext() { public String getContext() {
return context; return context;
} }
@@ -560,6 +626,7 @@ public class ElementParameter implements IElementParameter {
* *
* @param context the context to set * @param context the context to set
*/ */
@Override
public void setContext(String context) { public void setContext(String context) {
this.context = context; this.context = context;
} }
@@ -569,6 +636,7 @@ public class ElementParameter implements IElementParameter {
* *
* @return the childParameters * @return the childParameters
*/ */
@Override
public Map<String, IElementParameter> getChildParameters() { public Map<String, IElementParameter> getChildParameters() {
if (childParameters == null) { if (childParameters == null) {
childParameters = new HashMap<String, IElementParameter>(); childParameters = new HashMap<String, IElementParameter>();
@@ -576,10 +644,12 @@ public class ElementParameter implements IElementParameter {
return childParameters; return childParameters;
} }
@Override
public IElementParameter getParentParameter() { public IElementParameter getParentParameter() {
return parentParameter; return parentParameter;
} }
@Override
public void setParentParameter(IElementParameter parentParameter) { public void setParentParameter(IElementParameter parentParameter) {
this.parentParameter = parentParameter; this.parentParameter = parentParameter;
// keep the same category with parent. // keep the same category with parent.
@@ -614,6 +684,7 @@ public class ElementParameter implements IElementParameter {
* *
* @see org.talend.core.model.process.IElementParameter#getGroup() * @see org.talend.core.model.process.IElementParameter#getGroup()
*/ */
@Override
public String getGroup() { public String getGroup() {
return this.groupName; return this.groupName;
} }
@@ -623,6 +694,7 @@ public class ElementParameter implements IElementParameter {
* *
* @see org.talend.core.model.process.IElementParameter#setGroup(java.lang.String) * @see org.talend.core.model.process.IElementParameter#setGroup(java.lang.String)
*/ */
@Override
public void setGroup(String groupName) { public void setGroup(String groupName) {
this.groupName = groupName; this.groupName = groupName;
} }
@@ -632,6 +704,7 @@ public class ElementParameter implements IElementParameter {
* *
* @see org.talend.core.model.process.IElementParameter#getGroupDisplayName() * @see org.talend.core.model.process.IElementParameter#getGroupDisplayName()
*/ */
@Override
public String getGroupDisplayName() { public String getGroupDisplayName() {
return this.groupDisplayName; return this.groupDisplayName;
} }
@@ -641,6 +714,7 @@ public class ElementParameter implements IElementParameter {
* *
* @see org.talend.core.model.process.IElementParameter#setGroupDisplayName(java.lang.String) * @see org.talend.core.model.process.IElementParameter#setGroupDisplayName(java.lang.String)
*/ */
@Override
public void setGroupDisplayName(String groupDisplayName) { public void setGroupDisplayName(String groupDisplayName) {
this.groupDisplayName = groupDisplayName; this.groupDisplayName = groupDisplayName;
} }
@@ -650,6 +724,7 @@ public class ElementParameter implements IElementParameter {
* *
* @see org.talend.core.model.process.IElementParameter#getContextMode() * @see org.talend.core.model.process.IElementParameter#getContextMode()
*/ */
@Override
public boolean isContextMode() { public boolean isContextMode() {
return this.contextMode; return this.contextMode;
} }
@@ -659,6 +734,7 @@ public class ElementParameter implements IElementParameter {
* *
* @see org.talend.core.model.process.IElementParameter#setContextMode(java.lang.String) * @see org.talend.core.model.process.IElementParameter#setContextMode(java.lang.String)
*/ */
@Override
public void setContextMode(boolean mode) { public void setContextMode(boolean mode) {
this.contextMode = mode; this.contextMode = mode;
} }
@@ -668,6 +744,7 @@ public class ElementParameter implements IElementParameter {
* *
* @see org.talend.core.model.process.IElementParameter#getLabelFromRepository() * @see org.talend.core.model.process.IElementParameter#getLabelFromRepository()
*/ */
@Override
public String getLabelFromRepository() { public String getLabelFromRepository() {
return this.labelFromRepository; return this.labelFromRepository;
} }
@@ -677,6 +754,7 @@ public class ElementParameter implements IElementParameter {
* *
* @see org.talend.core.model.process.IElementParameter#setLabelFromRepository(java.lang.String) * @see org.talend.core.model.process.IElementParameter#setLabelFromRepository(java.lang.String)
*/ */
@Override
public void setLabelFromRepository(String label) { public void setLabelFromRepository(String label) {
this.labelFromRepository = label; this.labelFromRepository = label;
@@ -687,6 +765,7 @@ public class ElementParameter implements IElementParameter {
* *
* @return the color * @return the color
*/ */
@Override
public RGB getColor() { public RGB getColor() {
return this.color; return this.color;
} }
@@ -696,6 +775,7 @@ public class ElementParameter implements IElementParameter {
* *
* @param color the color to set * @param color the color to set
*/ */
@Override
public void setColor(RGB color) { public void setColor(RGB color) {
this.color = color; this.color = color;
} }
@@ -705,6 +785,7 @@ public class ElementParameter implements IElementParameter {
* *
* @return the backgroundColor * @return the backgroundColor
*/ */
@Override
public RGB getBackgroundColor() { public RGB getBackgroundColor() {
return this.backgroundColor; return this.backgroundColor;
} }
@@ -714,6 +795,7 @@ public class ElementParameter implements IElementParameter {
* *
* @param backgroundColor the backgroundColor to set * @param backgroundColor the backgroundColor to set
*/ */
@Override
public void setBackgroundColor(RGB backgroundColor) { public void setBackgroundColor(RGB backgroundColor) {
this.backgroundColor = backgroundColor; this.backgroundColor = backgroundColor;
} }
@@ -723,6 +805,7 @@ public class ElementParameter implements IElementParameter {
* *
* @see org.talend.core.model.process.IElementParameter#isBasedOnSubjobStarts() * @see org.talend.core.model.process.IElementParameter#isBasedOnSubjobStarts()
*/ */
@Override
public boolean isBasedOnSubjobStarts() { public boolean isBasedOnSubjobStarts() {
return basedOnSubjobStarts; return basedOnSubjobStarts;
} }
@@ -732,6 +815,7 @@ public class ElementParameter implements IElementParameter {
* *
* @see org.talend.core.model.process.IElementParameter#setBasedOnSubjobStarts(boolean) * @see org.talend.core.model.process.IElementParameter#setBasedOnSubjobStarts(boolean)
*/ */
@Override
public void setBasedOnSubjobStarts(boolean basedOnSubjobStarts) { public void setBasedOnSubjobStarts(boolean basedOnSubjobStarts) {
this.basedOnSubjobStarts = basedOnSubjobStarts; this.basedOnSubjobStarts = basedOnSubjobStarts;
} }
@@ -741,6 +825,7 @@ public class ElementParameter implements IElementParameter {
* *
* @see org.talend.core.model.process.IElementParameter#isDynamicSettings() * @see org.talend.core.model.process.IElementParameter#isDynamicSettings()
*/ */
@Override
public boolean isDynamicSettings() { public boolean isDynamicSettings() {
return this.dynamicSettings; return this.dynamicSettings;
} }
@@ -750,6 +835,7 @@ public class ElementParameter implements IElementParameter {
* *
* @see org.talend.core.model.process.IElementParameter#setDynamicSettings(java.lang.Boolean) * @see org.talend.core.model.process.IElementParameter#setDynamicSettings(java.lang.Boolean)
*/ */
@Override
public void setDynamicSettings(boolean dynamicSettings) { public void setDynamicSettings(boolean dynamicSettings) {
this.dynamicSettings = dynamicSettings; this.dynamicSettings = dynamicSettings;
} }
@@ -759,6 +845,7 @@ public class ElementParameter implements IElementParameter {
* *
* @see org.talend.core.model.process.IElementParameter#getListItemsNotReadOnlyIf() * @see org.talend.core.model.process.IElementParameter#getListItemsNotReadOnlyIf()
*/ */
@Override
public String[] getListItemsNotReadOnlyIf() { public String[] getListItemsNotReadOnlyIf() {
return this.itemsNotReadOnlyIf; return this.itemsNotReadOnlyIf;
} }
@@ -768,6 +855,7 @@ public class ElementParameter implements IElementParameter {
* *
* @see org.talend.core.model.process.IElementParameter#getListItemsReadOnlyIf() * @see org.talend.core.model.process.IElementParameter#getListItemsReadOnlyIf()
*/ */
@Override
public String[] getListItemsReadOnlyIf() { public String[] getListItemsReadOnlyIf() {
return this.itemsReadOnlyIf; return this.itemsReadOnlyIf;
} }
@@ -777,6 +865,7 @@ public class ElementParameter implements IElementParameter {
* *
* @see org.talend.core.model.process.IElementParameter#getNotReadOnlyIf() * @see org.talend.core.model.process.IElementParameter#getNotReadOnlyIf()
*/ */
@Override
public String getNotReadOnlyIf() { public String getNotReadOnlyIf() {
// TODO Auto-generated method stub // TODO Auto-generated method stub
return this.notReadonlyIf; return this.notReadonlyIf;
@@ -787,6 +876,7 @@ public class ElementParameter implements IElementParameter {
* *
* @see org.talend.core.model.process.IElementParameter#getReadOnlyIf() * @see org.talend.core.model.process.IElementParameter#getReadOnlyIf()
*/ */
@Override
public String getReadOnlyIf() { public String getReadOnlyIf() {
// TODO Auto-generated method stub // TODO Auto-generated method stub
return this.readonlyIf; return this.readonlyIf;
@@ -797,6 +887,7 @@ public class ElementParameter implements IElementParameter {
* *
* @see org.talend.core.model.process.IElementParameter#isReadOnly(java.util.List) * @see org.talend.core.model.process.IElementParameter#isReadOnly(java.util.List)
*/ */
@Override
public boolean isReadOnly(List<? extends IElementParameter> listParam) { public boolean isReadOnly(List<? extends IElementParameter> listParam) {
boolean readonlyParameter = false; boolean readonlyParameter = false;
@@ -818,6 +909,7 @@ public class ElementParameter implements IElementParameter {
* @see org.talend.core.model.process.IElementParameter#isReadOnly(java.lang.String, java.lang.String, * @see org.talend.core.model.process.IElementParameter#isReadOnly(java.lang.String, java.lang.String,
* java.util.Map) * java.util.Map)
*/ */
@Override
public boolean isReadOnly(String conditionReadOnlyIf, String conditionNotReadOnlyIf, public boolean isReadOnly(String conditionReadOnlyIf, String conditionNotReadOnlyIf,
List<? extends IElementParameter> listParam) { List<? extends IElementParameter> listParam) {
boolean readonlyParameter = false; boolean readonlyParameter = false;
@@ -839,6 +931,7 @@ public class ElementParameter implements IElementParameter {
* *
* @see org.talend.core.model.process.IElementParameter#setListItemsNotReadOnlyIf(java.lang.String[]) * @see org.talend.core.model.process.IElementParameter#setListItemsNotReadOnlyIf(java.lang.String[])
*/ */
@Override
public void setListItemsNotReadOnlyIf(String[] list) { public void setListItemsNotReadOnlyIf(String[] list) {
itemsNotReadOnlyIf = list; itemsNotReadOnlyIf = list;
@@ -849,6 +942,7 @@ public class ElementParameter implements IElementParameter {
* *
* @see org.talend.core.model.process.IElementParameter#setListItemsReadOnlyIf(java.lang.String[]) * @see org.talend.core.model.process.IElementParameter#setListItemsReadOnlyIf(java.lang.String[])
*/ */
@Override
public void setListItemsReadOnlyIf(String[] list) { public void setListItemsReadOnlyIf(String[] list) {
itemsReadOnlyIf = list; itemsReadOnlyIf = list;
@@ -859,6 +953,7 @@ public class ElementParameter implements IElementParameter {
* *
* @see org.talend.core.model.process.IElementParameter#setNotReadOnlyIf(java.lang.String) * @see org.talend.core.model.process.IElementParameter#setNotReadOnlyIf(java.lang.String)
*/ */
@Override
public void setNotReadOnlyIf(String notReadOnly) { public void setNotReadOnlyIf(String notReadOnly) {
this.notReadonlyIf = notReadOnly; this.notReadonlyIf = notReadOnly;
} }
@@ -868,26 +963,32 @@ public class ElementParameter implements IElementParameter {
* *
* @see org.talend.core.model.process.IElementParameter#setReadOnlyIf(java.lang.String) * @see org.talend.core.model.process.IElementParameter#setReadOnlyIf(java.lang.String)
*/ */
@Override
public void setReadOnlyIf(String readOnly) { public void setReadOnlyIf(String readOnly) {
this.readonlyIf = readOnly; this.readonlyIf = readOnly;
} }
@Override
public boolean isColumnsBasedOnSchema() { public boolean isColumnsBasedOnSchema() {
return this.columnsBasedOnSchema; return this.columnsBasedOnSchema;
} }
@Override
public void setColumnsBasedOnSchema(boolean columnsBasedOnSchema) { public void setColumnsBasedOnSchema(boolean columnsBasedOnSchema) {
this.columnsBasedOnSchema = columnsBasedOnSchema; this.columnsBasedOnSchema = columnsBasedOnSchema;
} }
@Override
public boolean isNoContextAssist() { public boolean isNoContextAssist() {
return this.noContextAssist; return this.noContextAssist;
} }
@Override
public void setNoContextAssist(boolean enable) { public void setNoContextAssist(boolean enable) {
this.noContextAssist = enable; this.noContextAssist = enable;
} }
@Override
public IElementParameter getClone() { public IElementParameter getClone() {
IElementParameter clone = new ElementParameter(this.element); IElementParameter clone = new ElementParameter(this.element);
@@ -1038,6 +1139,7 @@ public class ElementParameter implements IElementParameter {
* *
* @return the maxlength * @return the maxlength
*/ */
@Override
public int getMaxlength() { public int getMaxlength() {
return this.maxlength; return this.maxlength;
} }

View File

@@ -311,18 +311,32 @@ public final class Expression {
// #LINK@NODE, #PREVIOUS@NODE, #NEXT@NODE ----->implement them later // #LINK@NODE, #PREVIOUS@NODE, #NEXT@NODE ----->implement them later
if ((variableName != null) && (variableValue != null)) { if ((variableName != null) && (variableValue != null)) {
if (varNames[0].equals("#LINK@NODE")) { //$NON-NLS-1$ if (varNames[0].equals("#LINK@NODE")) { //$NON-NLS-1$
INode node = null;
if (currentParam != null && currentParam.getElement() instanceof INode) { if (currentParam != null && currentParam.getElement() instanceof INode) {
INode node = (INode) currentParam.getElement(); node = (INode) currentParam.getElement();
} else if (currentParam == null) {
if (listParam != null && listParam.size() > 0) {
IElement element = listParam.get(0).getElement();
if (element instanceof INode) {
node = (INode) element;
}
}
}
if (node != null) {
String relatedNodeName = ElementParameterParser.getValue(node, "__" + varNames[1] + "__"); //$NON-NLS-1$ //$NON-NLS-2$ String relatedNodeName = ElementParameterParser.getValue(node, "__" + varNames[1] + "__"); //$NON-NLS-1$ //$NON-NLS-2$
List<? extends INode> generatingNodes = node.getProcess().getGeneratingNodes(); // if relatedNodeName is empty, maybe means this property have not been setted
for (INode aNode : generatingNodes) { if (relatedNodeName != null && !relatedNodeName.trim().isEmpty()) {
if (aNode.getUniqueName().equals(relatedNodeName)) { List<? extends INode> generatingNodes = node.getProcess().getGeneratingNodes();
simpleExpression = simpleExpression.replace(varNames[0] + "." + varNames[1] + ".", ""); //$NON-NLS-1$ //$NON-NLS-2$//$NON-NLS-3$ for (INode aNode : generatingNodes) {
List<? extends IElementParameter> elementParameters = aNode.getElementParameters(); if (aNode.getUniqueName().equals(relatedNodeName)) {
// let's supose the currentParam = null, there won't want deal with the TABLE field, only simpleExpression = simpleExpression.replace(varNames[0] + "." + varNames[1] + ".", ""); //$NON-NLS-1$ //$NON-NLS-2$//$NON-NLS-3$
// deal with LIST/CHECKBOX List<? extends IElementParameter> elementParameters = aNode.getElementParameters();
return evaluate(simpleExpression, elementParameters); // let's supose the currentParam = null, there won't want deal with the TABLE field,
// only
// deal with LIST/CHECKBOX
return evaluate(simpleExpression, elementParameters);
}
} }
} }
@@ -662,28 +676,42 @@ public final class Expression {
// debug: System.out.println(leftString + " => " + // debug: System.out.println(leftString + " => " +
// leftExpression.isValid()); // leftExpression.isValid());
} }
String rightString = string.substring(i + 3, string.length()).trim();
Expression rightExpression = new Expression(rightString); boolean needValidRightExpression = true;
expression.setRightExpression(rightExpression); if (expression.getCondition().equals(AND) && !expression.getLeftExpression().isValid()) {
if (rightString.contains("(") //$NON-NLS-1$ // if left expression is already false, then needn't continue to validate right expression
|| isThereCondition(rightString, AND) || isThereCondition(rightString, OR)) { expression.setValid(false);
evaluateExpression(rightExpression, listParam, currentParam); needValidRightExpression = false;
} else { // no bracket == evaluate expression } else if (expression.getCondition().equals(OR) && expression.getLeftExpression().isValid()) {
rightExpression.setValid(evaluateSimpleExpression(rightString, listParam, currentParam)); // if left expression is already true, then need't continue to validate right expression
// debug: System.out.println(rightString + " => " + expression.setValid(true);
// rightExpression.isValid()); needValidRightExpression = false;
} }
if (expression.getCondition().equals(AND)) {
if (expression.getLeftExpression().isValid() && expression.getRightExpression().isValid()) { if (needValidRightExpression) {
expression.setValid(true); String rightString = string.substring(i + 3, string.length()).trim();
} else { Expression rightExpression = new Expression(rightString);
expression.setValid(false); expression.setRightExpression(rightExpression);
if (rightString.contains("(") //$NON-NLS-1$
|| isThereCondition(rightString, AND) || isThereCondition(rightString, OR)) {
evaluateExpression(rightExpression, listParam, currentParam);
} else { // no bracket == evaluate expression
rightExpression.setValid(evaluateSimpleExpression(rightString, listParam, currentParam));
// debug: System.out.println(rightString + " => " +
// rightExpression.isValid());
} }
} else if (expression.getCondition().equals(OR)) { if (expression.getCondition().equals(AND)) {
if (expression.getLeftExpression().isValid() || expression.getRightExpression().isValid()) { if (expression.getLeftExpression().isValid() && expression.getRightExpression().isValid()) {
expression.setValid(true); expression.setValid(true);
} else { } else {
expression.setValid(false); expression.setValid(false);
}
} else if (expression.getCondition().equals(OR)) {
if (expression.getLeftExpression().isValid() || expression.getRightExpression().isValid()) {
expression.setValid(true);
} else {
expression.setValid(false);
}
} }
} }
} }

View File

@@ -47,6 +47,7 @@ import org.talend.core.model.process.AbstractNode;
import org.talend.core.model.process.EComponentCategory; import org.talend.core.model.process.EComponentCategory;
import org.talend.core.model.process.EConnectionType; import org.talend.core.model.process.EConnectionType;
import org.talend.core.model.process.EParameterFieldType; import org.talend.core.model.process.EParameterFieldType;
import org.talend.core.model.process.ElementParameterParser;
import org.talend.core.model.process.IConnection; import org.talend.core.model.process.IConnection;
import org.talend.core.model.process.IConnectionCategory; import org.talend.core.model.process.IConnectionCategory;
import org.talend.core.model.process.IElement; import org.talend.core.model.process.IElement;
@@ -1770,6 +1771,20 @@ public class DataProcess implements IGeneratingProcess {
dataNodeList.remove(preStaLogConNode); dataNodeList.remove(preStaLogConNode);
dataNodeList.add(0, preStaLogConNode); dataNodeList.add(0, preStaLogConNode);
} }
// tag all the components after Iterator(Parallel)
// !iterator with parallel shouldn't work on merge!
for (INode node : dataNodeList) {
if (node.isSubProcessStart() && node.isActivate()) {
tagComponentAfterParallelIterator(node);
}
}
for (INode node : dataNodeList) {
if (node.isSubProcessStart() && node.isActivate()) {
tagSubProcessAfterParallelIterator(node);
}
}
checkRefList = null; checkRefList = null;
checkMultipleMap = null; checkMultipleMap = null;
checktUniteMap = null; checktUniteMap = null;
@@ -1781,6 +1796,50 @@ public class DataProcess implements IGeneratingProcess {
} }
/**
* DOC bchen Comment method "tagSubProcessAfterParallelIterator".
*
* @param node
*/
private void tagSubProcessAfterParallelIterator(INode node) {
if (node.getIncomingConnections() != null && node.getIncomingConnections().size() != 0) {
IConnection connection = node.getIncomingConnections().get(0);
if (connection.getLineStyle().equals(EConnectionType.ON_COMPONENT_OK)
|| connection.getLineStyle().equals(EConnectionType.ON_COMPONENT_ERROR)
|| connection.getLineStyle().equals(EConnectionType.ON_SUBJOB_OK)
|| connection.getLineStyle().equals(EConnectionType.ON_SUBJOB_ERROR)
|| connection.getLineStyle().equals(EConnectionType.RUN_IF)) {// add if you think it should be count
// for parallel Iterator
if (((AbstractNode) connection.getSource()).getParallelIterator() != null) {
((AbstractNode) node).setParallelIterator(((AbstractNode) connection.getSource()).getParallelIterator());
tagComponentAfterParallelIterator(node);
}
}
}
}
/**
* DOC bchen Comment method "tagComponentAfterParallelIterator".
*
* @param node
*/
private void tagComponentAfterParallelIterator(INode node) {
for (IConnection connection : node.getOutgoingSortedConnections()) {
if (connection.getTarget().isActivate()) {
if (connection.getLineStyle().hasConnectionCategory(IConnectionCategory.MAIN | IConnectionCategory.USE_ITERATE)) {
if (((AbstractNode) node).getParallelIterator() != null) {
((AbstractNode) connection.getTarget()).setParallelIterator(((AbstractNode) node).getParallelIterator());
} else if (connection.getLineStyle().equals(EConnectionType.ITERATE)
&& Boolean.TRUE.toString().equals(ElementParameterParser.getValue(connection, "__ENABLE_PARALLEL__"))) {
((AbstractNode) connection.getTarget()).setParallelIterator(connection.getTarget().getUniqueName());
}
tagComponentAfterParallelIterator(connection.getTarget());
}
}
}
}
private void checkPigLoadComponent() { private void checkPigLoadComponent() {
// if (PluginChecker.isPigudfPluginLoaded()) { // if (PluginChecker.isPigudfPluginLoaded()) {
// for (INode dataNode : dataNodeList) { // for (INode dataNode : dataNodeList) {

View File

@@ -16,9 +16,15 @@ import java.lang.reflect.InvocationTargetException;
import java.util.List; import java.util.List;
import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.IWorkspace;
import org.eclipse.core.resources.IWorkspaceRunnable;
import org.eclipse.core.resources.IncrementalProjectBuilder; import org.eclipse.core.resources.IncrementalProjectBuilder;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.jobs.ISchedulingRule;
import org.eclipse.emf.common.notify.Notification; import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.common.notify.impl.AdapterImpl; import org.eclipse.emf.common.notify.impl.AdapterImpl;
import org.eclipse.emf.common.util.EList; import org.eclipse.emf.common.util.EList;
@@ -55,16 +61,19 @@ import org.talend.commons.ui.runtime.image.ImageProvider;
import org.talend.commons.utils.VersionUtils; import org.talend.commons.utils.VersionUtils;
import org.talend.core.CorePlugin; import org.talend.core.CorePlugin;
import org.talend.core.GlobalServiceRegister; import org.talend.core.GlobalServiceRegister;
import org.talend.core.model.general.Project;
import org.talend.core.model.properties.ByteArray; import org.talend.core.model.properties.ByteArray;
import org.talend.core.model.properties.FileItem; import org.talend.core.model.properties.FileItem;
import org.talend.core.model.properties.Information; import org.talend.core.model.properties.Information;
import org.talend.core.model.properties.Item; import org.talend.core.model.properties.Item;
import org.talend.core.model.properties.Property;
import org.talend.core.model.properties.RoutineItem; import org.talend.core.model.properties.RoutineItem;
import org.talend.core.model.repository.ERepositoryObjectType; import org.talend.core.model.repository.ERepositoryObjectType;
import org.talend.core.model.repository.Folder; import org.talend.core.model.repository.Folder;
import org.talend.core.model.repository.IRepositoryViewObject; import org.talend.core.model.repository.IRepositoryViewObject;
import org.talend.core.model.utils.RepositoryManagerHelper; import org.talend.core.model.utils.RepositoryManagerHelper;
import org.talend.core.repository.model.ProxyRepositoryFactory; import org.talend.core.repository.model.ProxyRepositoryFactory;
import org.talend.core.runtime.CoreRuntimePlugin;
import org.talend.core.ui.ILastVersionChecker; import org.talend.core.ui.ILastVersionChecker;
import org.talend.core.ui.IUIRefresher; import org.talend.core.ui.IUIRefresher;
import org.talend.core.ui.branding.IBrandingService; import org.talend.core.ui.branding.IBrandingService;
@@ -74,6 +83,7 @@ import org.talend.designer.core.ui.action.SaveAsRoutineAction;
import org.talend.designer.core.ui.action.SaveAsSQLPatternAction; import org.talend.designer.core.ui.action.SaveAsSQLPatternAction;
import org.talend.designer.core.ui.views.problems.Problems; import org.talend.designer.core.ui.views.problems.Problems;
import org.talend.designer.core.utils.DesignerColorUtils; import org.talend.designer.core.utils.DesignerColorUtils;
import org.talend.repository.ProjectManager;
import org.talend.repository.RepositoryWorkUnit; import org.talend.repository.RepositoryWorkUnit;
import org.talend.repository.editor.RepositoryEditorInput; import org.talend.repository.editor.RepositoryEditorInput;
import org.talend.repository.model.ERepositoryStatus; import org.talend.repository.model.ERepositoryStatus;
@@ -299,6 +309,27 @@ public class StandAloneTalendJavaEditor extends CompilationUnitEditor implements
} }
public void resetItem() throws PersistenceException {
if (item.getProperty().eResource() == null || item.eResource() == null) {
IRepositoryService service = CoreRuntimePlugin.getInstance().getRepositoryService();
IProxyRepositoryFactory factory = service.getProxyRepositoryFactory();
//
// Property updated = factory.getUptodateProperty(getItem().getProperty());
Property updatedProperty = null;
try {
factory.initialize();
IRepositoryViewObject repositoryViewObject = factory.getLastVersion(new Project(ProjectManager.getInstance()
.getProject(item.getProperty().getItem())), item.getProperty().getId());
if (repositoryViewObject != null) {
updatedProperty = repositoryViewObject.getProperty();
item = (FileItem) updatedProperty.getItem();
}
} catch (PersistenceException e) {
ExceptionHandler.process(e);
}
}
}
@Override @Override
public void doSave(final IProgressMonitor monitor) { public void doSave(final IProgressMonitor monitor) {
IRepositoryService service = CorePlugin.getDefault().getRepositoryService(); IRepositoryService service = CorePlugin.getDefault().getRepositoryService();
@@ -325,6 +356,7 @@ public class StandAloneTalendJavaEditor extends CompilationUnitEditor implements
super.doSave(monitor); super.doSave(monitor);
try { try {
resetItem();
ByteArray byteArray = item.getContent(); ByteArray byteArray = item.getContent();
byteArray.setInnerContentFromFile(((FileEditorInput) getEditorInput()).getFile()); byteArray.setInnerContentFromFile(((FileEditorInput) getEditorInput()).getFile());
try { try {
@@ -343,8 +375,10 @@ public class StandAloneTalendJavaEditor extends CompilationUnitEditor implements
refreshJobAndSave(repFactory); refreshJobAndSave(repFactory);
} }
}; };
repositoryWorkUnit.setAvoidSvnUpdate(true);
repositoryWorkUnit.setAvoidUnloadResources(true);
repFactory.executeRepositoryWorkUnit(repositoryWorkUnit); repFactory.executeRepositoryWorkUnit(repositoryWorkUnit);
repositoryWorkUnit.throwPersistenceExceptionIfAny();
// for bug 11930: Unable to save Routines.* in db project // for bug 11930: Unable to save Routines.* in db project
// repFactory.save(item); // repFactory.save(item);
@@ -357,13 +391,47 @@ public class StandAloneTalendJavaEditor extends CompilationUnitEditor implements
} }
private void refreshJobAndSave(final IProxyRepositoryFactory repFactory) { private void refreshJobAndSave(final IProxyRepositoryFactory repFactory) throws PersistenceException {
final IWorkspaceRunnable op = new IWorkspaceRunnable() {
@Override
public void run(IProgressMonitor monitor) throws CoreException {
try {
repFactory.save(item);
} catch (PersistenceException e) {
throw new CoreException(new Status(IStatus.ERROR, DesignerPlugin.ID, "Save Routine failed!", e));
}
};
};
IRunnableWithProgress iRunnableWithProgress = new IRunnableWithProgress() {
@Override
public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
IWorkspace workspace = ResourcesPlugin.getWorkspace();
try {
ISchedulingRule schedulingRule = workspace.getRoot();
// the update the project files need to be done in the workspace runnable to avoid all
// notification
// of changes before the end of the modifications.
workspace.run(op, schedulingRule, IWorkspace.AVOID_UPDATE, monitor);
} catch (CoreException e) {
throw new InvocationTargetException(e);
}
}
};
try { try {
// cause it to update MaxInformationLevel PlatformUI.getWorkbench().getProgressService().run(false, false, iRunnableWithProgress);
repFactory.save(item); } catch (InvocationTargetException e) {
} catch (Exception e) { throw new PersistenceException(e);
} catch (InterruptedException e) {
throw new PersistenceException(e);
} }
// update editor image
setTitleImage(getTitleImage()); setTitleImage(getTitleImage());
} }

View File

@@ -433,6 +433,10 @@ public class NodesPasteCommand extends Command {
copyOfMetadataList.add(newTable); copyOfMetadataList.add(newTable);
} }
pastedNode.setMetadataList(copyOfMetadataList); pastedNode.setMetadataList(copyOfMetadataList);
}
// TDQ-10039 extract this code from above "else",aslo consider tMatchGroup.
if (mainConnector.isMultiSchema() || copiedNode.getComponent().getName().startsWith("tMatchGroup")) { //$NON-NLS-1$
IExternalNode externalNode = pastedNode.getExternalNode(); IExternalNode externalNode = pastedNode.getExternalNode();
if (externalNode != null) { if (externalNode != null) {
if (copiedNode.getExternalData() != null) { if (copiedNode.getExternalData() != null) {

View File

@@ -77,7 +77,7 @@ public class PropertyChangeCommand extends Command {
private final Map<IElementParameter, Object> oldElementValues; private final Map<IElementParameter, Object> oldElementValues;
private ChangeMetadataCommand changeMetadataCommand; private List<ChangeMetadataCommand> changeMetadataCommands;
private String propertyTypeName; private String propertyTypeName;
@@ -106,6 +106,7 @@ public class PropertyChangeCommand extends Command {
newValue = propValue; newValue = propValue;
toUpdate = false; toUpdate = false;
oldElementValues = new HashMap<IElementParameter, Object>(); oldElementValues = new HashMap<IElementParameter, Object>();
changeMetadataCommands = new ArrayList<ChangeMetadataCommand>();
setLabel(Messages.getString("PropertyChangeCommand.Label")); //$NON-NLS-1$ setLabel(Messages.getString("PropertyChangeCommand.Label")); //$NON-NLS-1$
// for job settings extra (feature 2710) // for job settings extra (feature 2710)
// if (JobSettingsConstants.isExtraParameter(propName) || // if (JobSettingsConstants.isExtraParameter(propName) ||
@@ -128,9 +129,50 @@ public class PropertyChangeCommand extends Command {
// } // }
} }
private List<INode> getRelativeNodes(List<? extends IElementParameter> elementParameters) {
List<INode> retList = null;
if (elementParameters == null || elementParameters.size() == 0) {
return retList;
}
IElement element = elementParameters.get(0).getElement();
if (element instanceof Node) {
Node operatingNode = (Node) element;
IProcess process = operatingNode.getProcess();
if (process == null) {
return retList;
}
List<? extends INode> graphicNodes = process.getGraphicalNodes();
if (graphicNodes == null || graphicNodes.size() == 0) {
return retList;
}
String nodeName = operatingNode.getLabel();
retList = new ArrayList<INode>();
for (INode node : graphicNodes) {
List<? extends IElementParameter> nodeElementParameters = node.getElementParameters();
if (nodeElementParameters == null || nodeElementParameters.size() == 0) {
continue;
}
for (IElementParameter elementParameter : nodeElementParameters) {
if (elementParameter.getFieldType() == EParameterFieldType.COMPONENT_LIST) {
Object objName = elementParameter.getValue();
if (objName == null) {
continue;
}
String relatedComponentsName = objName.toString();
if (relatedComponentsName.equals(nodeName)) {
retList.add(node);
}
}
}
}
}
return retList;
}
@Override @Override
public void execute() { public void execute() {
IElementParameter currentParam = elem.getElementParameter(propName); IElementParameter currentParam = elem.getElementParameter(propName);
changeMetadataCommands.clear();
oldElementValues.clear(); oldElementValues.clear();
if (currentParam == null) { if (currentParam == null) {
return; return;
@@ -316,74 +358,11 @@ public class PropertyChangeCommand extends Command {
if (!toUpdate if (!toUpdate
&& (currentParam.getFieldType().equals(EParameterFieldType.RADIO) && (currentParam.getFieldType().equals(EParameterFieldType.RADIO)
|| currentParam.getFieldType().equals(EParameterFieldType.CLOSED_LIST) || currentParam.getFieldType().equals(EParameterFieldType.CLOSED_LIST)
|| currentParam.getFieldType().equals(EParameterFieldType.CHECK) || currentParam.getFieldType().equals( || currentParam.getFieldType().equals(EParameterFieldType.CHECK)
EParameterFieldType.AS400_CHECK))) { || currentParam.getFieldType().equals(EParameterFieldType.AS400_CHECK) || currentParam.getFieldType()
.equals(EParameterFieldType.COMPONENT_LIST))) {
toUpdate = false; toUpdate = false;
for (int i = 0; i < elem.getElementParameters().size(); i++) { setDefaultValues(currentParam, elem);
IElementParameter testedParam = elem.getElementParameters().get(i);
String showIf = testedParam.getShowIf();
String notShowIf = testedParam.getNotShowIf();
if (showIf != null) {
if (showIf.contains(currentParam.getName())) {
toUpdate = true;
}
} else {
if (notShowIf != null) {
if (notShowIf.contains(currentParam.getName())) {
toUpdate = true;
}
}
}
if (testedParam.getFieldType() == EParameterFieldType.TABLE) {
String[] tmpShowIfs = testedParam.getListItemsShowIf();
if (tmpShowIfs != null) {
for (String show : tmpShowIfs) {
if (show != null && show.contains(currentParam.getName())) {
toUpdate = true;
}
}
}
tmpShowIfs = testedParam.getListItemsNotShowIf();
if (tmpShowIfs != null) {
for (String show : tmpShowIfs) {
if (show != null && show.contains(currentParam.getName())) {
toUpdate = true;
}
}
}
}
if (currentParam.getFieldType().equals(EParameterFieldType.CLOSED_LIST)) {
/*
* TUP-968, In order to refresh for missing modules top messages.
*/
if (EParameterName.DB_VERSION.getName().equals(currentParam.getName())
|| "HBASE_VERSION".equals(currentParam.getName()) //$NON-NLS-1$
|| "HIVE_VERSION".equals(currentParam.getName()) //$NON-NLS-1$
|| "HCAT_VERSION".equals(currentParam.getName()) //$NON-NLS-1$
|| "DISTRIBUTION".equals(currentParam.getName())) {//$NON-NLS-1$
toUpdate = true;
} else if (testedParam.getListItemsShowIf() != null) {
for (int j = 0; j < testedParam.getListItemsShowIf().length && !toUpdate; j++) {
showIf = testedParam.getListItemsShowIf()[j];
notShowIf = testedParam.getListItemsNotShowIf()[j];
if (showIf != null) {
if (showIf.contains(currentParam.getName())) {
toUpdate = true;
}
} else {
if (notShowIf != null) {
if (notShowIf.contains(currentParam.getName())) {
toUpdate = true;
}
}
}
}
}
}
setDefaultValues(currentParam, testedParam);
}
} }
if (currentParam.getName().equals(EParameterName.PROCESS_TYPE_PROCESS.getName())) { if (currentParam.getName().equals(EParameterName.PROCESS_TYPE_PROCESS.getName())) {
@@ -421,6 +400,7 @@ public class PropertyChangeCommand extends Command {
} }
} }
} }
updateRelativeNodesIfNeeded(currentParam);
// //
if (elem instanceof IGraphicalNode) { if (elem instanceof IGraphicalNode) {
((IGraphicalNode) elem).checkAndRefreshNode(); ((IGraphicalNode) elem).checkAndRefreshNode();
@@ -433,6 +413,103 @@ public class PropertyChangeCommand extends Command {
refreshMR(propName); refreshMR(propName);
} }
/**
* DOC cmeng Comment method "updateRelativeNodesIfNeeded".
*
* @param currentParam
*/
private void updateRelativeNodesIfNeeded(IElementParameter currentParam) {
boolean originalUpdateValue = toUpdate;
List<INode> relativeNodes = getRelativeNodes(elem.getElementParameters());
if (relativeNodes != null && 0 < relativeNodes.size()) {
for (INode node : relativeNodes) {
toUpdate = false;
setDefaultValues(currentParam, node);
if (toUpdate) {
node.setPropertyValue(updataComponentParamName, new Boolean(true));
}
}
}
toUpdate = originalUpdateValue;
}
/**
* DOC cmeng Comment method "setDefaultValues".
*
* @param currentParam
*/
private void setDefaultValues(IElementParameter currentParam, IElement node) {
List<? extends IElementParameter> elementParameters = node.getElementParameters();
if (elementParameters == null) {
return;
}
for (int i = 0; i < elementParameters.size(); i++) {
IElementParameter testedParam = elementParameters.get(i);
String showIf = testedParam.getShowIf();
String notShowIf = testedParam.getNotShowIf();
if (showIf != null) {
if (showIf.contains(currentParam.getName())) {
toUpdate = true;
}
} else {
if (notShowIf != null) {
if (notShowIf.contains(currentParam.getName())) {
toUpdate = true;
}
}
}
if (testedParam.getFieldType() == EParameterFieldType.TABLE) {
String[] tmpShowIfs = testedParam.getListItemsShowIf();
if (tmpShowIfs != null) {
for (String show : tmpShowIfs) {
if (show != null && show.contains(currentParam.getName())) {
toUpdate = true;
}
}
}
tmpShowIfs = testedParam.getListItemsNotShowIf();
if (tmpShowIfs != null) {
for (String show : tmpShowIfs) {
if (show != null && show.contains(currentParam.getName())) {
toUpdate = true;
}
}
}
}
if (currentParam.getFieldType().equals(EParameterFieldType.CLOSED_LIST)) {
/*
* TUP-968, In order to refresh for missing modules top messages.
*/
if (EParameterName.DB_VERSION.getName().equals(currentParam.getName())
|| "HBASE_VERSION".equals(currentParam.getName()) //$NON-NLS-1$
|| "HIVE_VERSION".equals(currentParam.getName()) //$NON-NLS-1$
|| "HCAT_VERSION".equals(currentParam.getName()) //$NON-NLS-1$
|| "DISTRIBUTION".equals(currentParam.getName())) {//$NON-NLS-1$
toUpdate = true;
} else if (testedParam.getListItemsShowIf() != null) {
for (int j = 0; j < testedParam.getListItemsShowIf().length && !toUpdate; j++) {
showIf = testedParam.getListItemsShowIf()[j];
notShowIf = testedParam.getListItemsNotShowIf()[j];
if (showIf != null) {
if (showIf.contains(currentParam.getName())) {
toUpdate = true;
}
} else {
if (notShowIf != null) {
if (notShowIf.contains(currentParam.getName())) {
toUpdate = true;
}
}
}
}
}
}
setDefaultValues(currentParam, testedParam, node);
}
}
private boolean needUpdateMonitorConnection() { private boolean needUpdateMonitorConnection() {
if (elem instanceof Connection) { if (elem instanceof Connection) {
@@ -465,7 +542,11 @@ public class PropertyChangeCommand extends Command {
* @param testedParam Tested parameter, to know if there is a link for the default values between this parameter and * @param testedParam Tested parameter, to know if there is a link for the default values between this parameter and
* the current. * the current.
*/ */
private void setDefaultValues(IElementParameter currentParam, IElementParameter testedParam) { private void setDefaultValues(IElementParameter currentParam, IElementParameter testedParam, IElement referenceNode) {
List<? extends IElementParameter> elementParameters = referenceNode.getElementParameters();
if (elementParameters == null) {
return;
}
boolean contains = false; boolean contains = false;
// zli // zli
@@ -495,13 +576,13 @@ public class PropertyChangeCommand extends Command {
if (testedParam.getListItemsShowIf() != null) { if (testedParam.getListItemsShowIf() != null) {
String conditionShowIf = testedParam.getListItemsShowIf()[index]; String conditionShowIf = testedParam.getListItemsShowIf()[index];
if (conditionShowIf != null) { if (conditionShowIf != null) {
isCurrentComboValid = Expression.evaluate(conditionShowIf, elem.getElementParameters()); isCurrentComboValid = Expression.evaluate(conditionShowIf, elementParameters);
} }
} }
if (testedParam.getListItemsNotShowIf() != null) { if (testedParam.getListItemsNotShowIf() != null) {
String conditionNotShowIf = testedParam.getListItemsNotShowIf()[index]; String conditionNotShowIf = testedParam.getListItemsNotShowIf()[index];
if (conditionNotShowIf != null) { if (conditionNotShowIf != null) {
isCurrentComboValid = !Expression.evaluate(conditionNotShowIf, elem.getElementParameters()); isCurrentComboValid = !Expression.evaluate(conditionNotShowIf, elementParameters);
} }
} }
} }
@@ -509,7 +590,7 @@ public class PropertyChangeCommand extends Command {
if (!isCurrentComboValid && testedParam.getListItemsShowIf() != null) { if (!isCurrentComboValid && testedParam.getListItemsShowIf() != null) {
for (String condition : testedParam.getListItemsShowIf()) { for (String condition : testedParam.getListItemsShowIf()) {
if (condition != null && condition.contains(currentParam.getName())) { if (condition != null && condition.contains(currentParam.getName())) {
boolean isValid = Expression.evaluate(condition, elem.getElementParameters()); boolean isValid = Expression.evaluate(condition, elementParameters);
if (isValid) { if (isValid) {
int index = ArrayUtils.indexOf(testedParam.getListItemsShowIf(), condition); int index = ArrayUtils.indexOf(testedParam.getListItemsShowIf(), condition);
testedParam.setValue(testedParam.getListItemsValue()[index]); testedParam.setValue(testedParam.getListItemsValue()[index]);
@@ -521,7 +602,7 @@ public class PropertyChangeCommand extends Command {
if (!isCurrentComboValid && !contains && testedParam.getListItemsNotShowIf() != null) { if (!isCurrentComboValid && !contains && testedParam.getListItemsNotShowIf() != null) {
for (String condition : testedParam.getListItemsNotShowIf()) { for (String condition : testedParam.getListItemsNotShowIf()) {
if (condition != null && condition.contains(currentParam.getName())) { if (condition != null && condition.contains(currentParam.getName())) {
boolean isValid = !Expression.evaluate(condition, elem.getElementParameters()); boolean isValid = !Expression.evaluate(condition, elementParameters);
if (isValid) { if (isValid) {
int index = ArrayUtils.indexOf(testedParam.getListItemsNotShowIf(), condition); int index = ArrayUtils.indexOf(testedParam.getListItemsNotShowIf(), condition);
testedParam.setValue(testedParam.getListItemsValue()[index]); testedParam.setValue(testedParam.getListItemsValue()[index]);
@@ -542,11 +623,11 @@ public class PropertyChangeCommand extends Command {
&& !testedParam.getFieldType().equals(EParameterFieldType.RADIO)) { && !testedParam.getFieldType().equals(EParameterFieldType.RADIO)) {
oldMapping = (String) testedParam.getValue(); oldMapping = (String) testedParam.getValue();
} }
testedParam.setValueToDefault(elem.getElementParameters()); testedParam.setValueToDefault(elementParameters);
if (testedParam.getFieldType().equals(EParameterFieldType.MAPPING_TYPE)) { if (testedParam.getFieldType().equals(EParameterFieldType.MAPPING_TYPE)) {
String newMapping = (String) testedParam.getValue(); String newMapping = (String) testedParam.getValue();
if (!oldMapping.equals(newMapping)) { if (!oldMapping.equals(newMapping)) {
Node node = (Node) elem; Node node = (Node) referenceNode;
if (node.getMetadataList().size() > 0) { if (node.getMetadataList().size() > 0) {
// to change with: // to change with:
// IMetadataTable metadataTable = node.getMetadataFromConnector(testedParam.getContext()); // IMetadataTable metadataTable = node.getMetadataFromConnector(testedParam.getContext());
@@ -557,7 +638,7 @@ public class PropertyChangeCommand extends Command {
} }
} else { } else {
// See issue 975, update the schema. // See issue 975, update the schema.
Node node = (Node) elem; Node node = (Node) referenceNode;
if (node.getMetadataList().size() > 0) { if (node.getMetadataList().size() > 0) {
IMetadataTable metadataTable = null; IMetadataTable metadataTable = null;
IMetadataTable newMetadataTable = null; IMetadataTable newMetadataTable = null;
@@ -629,7 +710,9 @@ public class PropertyChangeCommand extends Command {
newMetadataTable = metadataTable; newMetadataTable = metadataTable;
} }
changeMetadataCommand = new ChangeMetadataCommand(node, null, null, newMetadataTable); ChangeMetadataCommand changeMetadataCommand = new ChangeMetadataCommand(node, null, null,
newMetadataTable);
changeMetadataCommands.add(changeMetadataCommand);
changeMetadataCommand.execute(true); changeMetadataCommand.execute(true);
} }
} }
@@ -670,8 +753,12 @@ public class PropertyChangeCommand extends Command {
if (toUpdate) { if (toUpdate) {
elem.setPropertyValue(updataComponentParamName, new Boolean(true)); elem.setPropertyValue(updataComponentParamName, new Boolean(true));
} }
if (changeMetadataCommand != null) { if (changeMetadataCommands != null) {
changeMetadataCommand.undo(); int size = changeMetadataCommands.size();
for (int i = size - 1; 0 <= i; i--) {
ChangeMetadataCommand changeMetadataCommand = changeMetadataCommands.get(i);
changeMetadataCommand.undo();
}
} }
CodeView.refreshCodeView(elem); CodeView.refreshCodeView(elem);
ComponentSettings.switchToCurComponentSettingsView(); ComponentSettings.switchToCurComponentSettingsView();
@@ -726,8 +813,10 @@ public class PropertyChangeCommand extends Command {
elem.setPropertyValue(updataComponentParamName, new Boolean(true)); elem.setPropertyValue(updataComponentParamName, new Boolean(true));
} }
if (changeMetadataCommand != null) { if (changeMetadataCommands != null) {
changeMetadataCommand.redo(); for (ChangeMetadataCommand changeMetadataCommand : changeMetadataCommands) {
changeMetadataCommand.redo();
}
} }
CodeView.refreshCodeView(elem); CodeView.refreshCodeView(elem);
ComponentSettings.switchToCurComponentSettingsView(); ComponentSettings.switchToCurComponentSettingsView();

View File

@@ -528,7 +528,7 @@ public class JobletContainer extends NodeContainer {
if (isCollapsed()) { if (isCollapsed()) {
((Connection) conn).reconnect(conn.getSource(), this.node, conn.getLineStyle()); ((Connection) conn).reconnect(conn.getSource(), this.node, conn.getLineStyle());
} else { } else {
for (NodeContainer nodeContainer : this.nodeContainers) { out: for (NodeContainer nodeContainer : this.nodeContainers) {
Node connNode = nodeContainer.getNode(); Node connNode = nodeContainer.getNode();
IElementParameter elePa = this.node.getElementParameter(connNode.getJoblet_unique_name()); IElementParameter elePa = this.node.getElementParameter(connNode.getJoblet_unique_name());
@@ -565,6 +565,11 @@ public class JobletContainer extends NodeContainer {
break; break;
} else if (getFlowInput(inputs).size() == 1 && !isTri } else if (getFlowInput(inputs).size() == 1 && !isTri
&& new JobletUtil().isJobletInput(connNode, this.getProcess())) { && new JobletUtil().isJobletInput(connNode, this.getProcess())) {
for (IConnection flowConn : getFlowInput(inputs)) {
if (!flowConn.getUniqueName().equals(conn.getUniqueName())) {
continue out;
}
}
JobletConnectionReconnectCommand reConnectCommand = new JobletConnectionReconnectCommand(conn); JobletConnectionReconnectCommand reConnectCommand = new JobletConnectionReconnectCommand(conn);
reConnectCommand.setNewTarget(connNode); reConnectCommand.setNewTarget(connNode);
reConnectCommand.execute(); reConnectCommand.execute();
@@ -674,6 +679,7 @@ public class JobletContainer extends NodeContainer {
public boolean canCollapse() { public boolean canCollapse() {
List<String> connList = new ArrayList<String>(); List<String> connList = new ArrayList<String>();
List<String> metaList = new ArrayList<String>(); List<String> metaList = new ArrayList<String>();
List<String> triConnList = new ArrayList<String>();
if (node.getIncomingConnections().size() > 1) { if (node.getIncomingConnections().size() > 1) {
for (IConnection conn : node.getIncomingConnections()) { for (IConnection conn : node.getIncomingConnections()) {
if (conn.getConnectorName().startsWith("TRIGGER")) { if (conn.getConnectorName().startsWith("TRIGGER")) {
@@ -693,6 +699,15 @@ public class JobletContainer extends NodeContainer {
if (isTri) { if (isTri) {
IElementParameter elechild = elePa.getChildParameters().get("COMPONENT_LIST"); IElementParameter elechild = elePa.getChildParameters().get("COMPONENT_LIST");
if (elechild != null) { if (elechild != null) {
if (elechild.getValue() == null || ((String) elechild.getValue()).length() <= 0) {
return false;
} else {
if (triConnList.contains(elechild.getValue())) {
return false;
} else {
triConnList.add((String) elechild.getValue());
}
}
if (elechild.getValue() != null && (elechild.getValue() instanceof String)) { if (elechild.getValue() != null && (elechild.getValue() instanceof String)) {
metaList.remove(elechild.getValue()); metaList.remove(elechild.getValue());
} }

View File

@@ -3391,7 +3391,7 @@ public class Node extends Element implements IGraphicalNode {
"Node.differentFromSchemaDefined", inputConnecion.getName()); //$NON-NLS-1$ "Node.differentFromSchemaDefined", inputConnecion.getName()); //$NON-NLS-1$
Problems.add(ProblemStatus.ERROR, this, errorMessage); Problems.add(ProblemStatus.ERROR, this, errorMessage);
} }
} else if (connector.getMaxLinkInput() != 0 && connector.getMaxLinkOutput() == 0) { } else if (connector != null && connector.getMaxLinkInput() != 0 && connector.getMaxLinkOutput() == 0) {
if (!outputMeta.sameMetadataAs(inputMeta, IMetadataColumn.OPTIONS_NONE)) { if (!outputMeta.sameMetadataAs(inputMeta, IMetadataColumn.OPTIONS_NONE)) {
schemaSynchronized = false; schemaSynchronized = false;
String errorMessage = Messages.getString( String errorMessage = Messages.getString(

View File

@@ -152,6 +152,7 @@ import org.talend.designer.core.ui.editor.nodecontainer.NodeContainer;
import org.talend.designer.core.ui.editor.nodes.Node; import org.talend.designer.core.ui.editor.nodes.Node;
import org.talend.designer.core.ui.editor.notes.Note; import org.talend.designer.core.ui.editor.notes.Note;
import org.talend.designer.core.ui.editor.properties.controllers.ColumnListController; import org.talend.designer.core.ui.editor.properties.controllers.ColumnListController;
import org.talend.designer.core.ui.editor.properties.controllers.ComponentListController;
import org.talend.designer.core.ui.editor.properties.controllers.ConnectionListController; import org.talend.designer.core.ui.editor.properties.controllers.ConnectionListController;
import org.talend.designer.core.ui.editor.subjobcontainer.SubjobContainer; import org.talend.designer.core.ui.editor.subjobcontainer.SubjobContainer;
import org.talend.designer.core.ui.preferences.TalendDesignerPrefConstants; import org.talend.designer.core.ui.preferences.TalendDesignerPrefConstants;
@@ -1084,6 +1085,22 @@ public class Process extends Element implements IProcess2, IGEFProcess, ILastVer
listParamType.add(pType); listParamType.add(pType);
} }
private void initJobletComponents() {
for (INode node : nodes) {
if ((node instanceof Node) && ((Node) node).isJoblet()) {
List<? extends IElementParameter> parametersWithChildrens = node.getElementParametersWithChildrens();
for (IElementParameter param : parametersWithChildrens) {
if (param.getFieldType() == EParameterFieldType.COMPONENT_LIST) {
if (param.getValue() == null || ((String) param.getValue()).length() <= 0) {
ComponentListController.updateComponentList(node, param);
}
}
}
}
}
}
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
private void loadElementParameters(Element elemParam, EList listParamType) { private void loadElementParameters(Element elemParam, EList listParamType) {
boolean flag = false; boolean flag = false;
@@ -1750,6 +1767,7 @@ public class Process extends Element implements IProcess2, IGEFProcess, ILastVer
loadSubjobs(processType); loadSubjobs(processType);
initExternalComponents(); initExternalComponents();
initJobletComponents();
setActivate(true); setActivate(true);
checkStartNodes(); checkStartNodes();
// (bug 5365) // (bug 5365)

View File

@@ -1301,7 +1301,7 @@ public class TalendEditorDropTargetListener extends TemplateTransferDropTargetLi
// fore HL7, by gcui // fore HL7, by gcui
if (selectedNode.getObjectType() == ERepositoryObjectType.METADATA_FILE_HL7 && PluginChecker.isHL7PluginLoaded()) { if (selectedNode.getObjectType() == ERepositoryObjectType.METADATA_FILE_HL7 && PluginChecker.isHL7PluginLoaded()) {
for (MetadataTable table : ConnectionHelper.getTables(originalConnection)) { for (MetadataTable table : ConnectionHelper.getTablesWithOrders(originalConnection)) {
Command hl7Cmd = new RepositoryChangeMetadataForHL7Command(node, IHL7Constant.TABLE_SCHEMAS, Command hl7Cmd = new RepositoryChangeMetadataForHL7Command(node, IHL7Constant.TABLE_SCHEMAS,
table.getLabel(), ConvertionHelper.convert(table)); table.getLabel(), ConvertionHelper.convert(table));
list.add(hl7Cmd); list.add(hl7Cmd);

View File

@@ -648,9 +648,19 @@ public class TableController extends AbstractElementPropertySectionController {
} }
contextParameterNames = contextParameterNamesList.toArray(new String[0]); contextParameterNames = contextParameterNamesList.toArray(new String[0]);
} else {
contextParameterNames = new String[0];
} }
if (contextParameterNames == null || contextParameterNames.length == 0) {
contextParameterNamesList.clear();
// in case the job is opened but childjob are missing, or if there is a problem when retrieve the child job
// we rerebuild the list here from what was saved in the job before
for (HashMap<String, Object> values : (List<HashMap<String, Object>>) param.getValue()) {
String name = (String) values.get("PARAM_NAME_COLUMN"); //$NON-NLS-1$
contextParameterNamesList.add(name);
}
contextParameterNames = contextParameterNamesList.toArray(new String[0]);
}
// update table values // update table values
TableViewerCreator tableViewerCreator = (TableViewerCreator) hashCurControls.get(param.getName()); TableViewerCreator tableViewerCreator = (TableViewerCreator) hashCurControls.get(param.getName());
Object[] itemsValue = param.getListItemsValue(); Object[] itemsValue = param.getListItemsValue();
@@ -694,7 +704,7 @@ public class TableController extends AbstractElementPropertySectionController {
} else { } else {
if (o instanceof String) { if (o instanceof String) {
Integer nb = new Integer(tmpParam.getIndexOfItemFromList((String) o)); Integer nb = new Integer(tmpParam.getIndexOfItemFromList((String) o));
if (nb == -1) { if (nb == -1 && !"".equals(tmpParam.getDefaultClosedListValue())) { //$NON-NLS-1$
currentLine.put(items[j], tmpParam.getDefaultClosedListValue()); currentLine.put(items[j], tmpParam.getDefaultClosedListValue());
} }
} }
@@ -706,18 +716,6 @@ public class TableController extends AbstractElementPropertySectionController {
} }
// (bug 3740) // (bug 3740)
boolean checked = contextParameterNames != null && contextParameterNames.length > 0; boolean checked = contextParameterNames != null && contextParameterNames.length > 0;
if (!checked) {
Object value = param.getValue();
if (value != null && value instanceof List) {
if (!((List) value).isEmpty()) {
((List) value).clear();
if (part != null && part.getTalendEditor() != null) {
part.getTalendEditor().setDirty(true);
}
}
}
}
revertToolBarButtonState(checked); revertToolBarButtonState(checked);
} }

View File

@@ -22,6 +22,8 @@ import org.apache.commons.lang.ArrayUtils;
import org.eclipse.emf.common.util.EList; import org.eclipse.emf.common.util.EList;
import org.eclipse.ui.IEditorReference; import org.eclipse.ui.IEditorReference;
import org.eclipse.ui.PlatformUI; import org.eclipse.ui.PlatformUI;
import org.talend.commons.exception.ExceptionHandler;
import org.talend.commons.utils.PasswordEncryptUtil;
import org.talend.commons.utils.VersionUtils; import org.talend.commons.utils.VersionUtils;
import org.talend.core.CorePlugin; import org.talend.core.CorePlugin;
import org.talend.core.context.Context; import org.talend.core.context.Context;
@@ -240,12 +242,26 @@ public class ElementParameter2ParameterType {
} }
} }
} }
IElementParameter tmpParam = null;
for (Object o : param.getListItemsValue()) {
if (o instanceof IElementParameter) {
IElementParameter tableParam = (IElementParameter) o;
if (tableParam.getName().equals(elementValue.getElementRef())) {
tmpParam = tableParam;
break;
}
}
}
if (found) { if (found) {
if ((lineValues == null) || (lineValues.get(elementValue.getElementRef()) != null)) { if ((lineValues == null) || (lineValues.get(elementValue.getElementRef()) != null)) {
lineValues = new HashMap<String, Object>(); lineValues = new HashMap<String, Object>();
tableValues.add(lineValues); tableValues.add(lineValues);
} }
lineValues.put(elementValue.getElementRef(), elementValue.getValue()); String elemValue = elementValue.getValue();
if (tmpParam != null && EParameterFieldType.PASSWORD.equals(tmpParam.getFieldType())) {
elemValue = getRawValue(elemValue, tmpParam.getFieldType());
}
lineValues.put(elementValue.getElementRef(), elemValue);
if (elementValue.getType() != null) { if (elementValue.getType() != null) {
lineValues.put(elementValue.getElementRef() + IEbcdicConstant.REF_TYPE, lineValues.put(elementValue.getElementRef() + IEbcdicConstant.REF_TYPE,
elementValue.getType()); elementValue.getType());
@@ -253,6 +269,8 @@ public class ElementParameter2ParameterType {
} }
} }
elemParam.setPropertyValue(pTypeName, tableValues); elemParam.setPropertyValue(pTypeName, tableValues);
} else if (param.getFieldType().equals(EParameterFieldType.PASSWORD)) {
param.setValue(getRawValue(pType.getValue(), param.getFieldType()));
} else if (param.getFieldType().equals(EParameterFieldType.ENCODING_TYPE)) { } else if (param.getFieldType().equals(EParameterFieldType.ENCODING_TYPE)) {
// fix for bug 2193 // fix for bug 2193
boolean setToCustom = false; boolean setToCustom = false;
@@ -516,4 +534,22 @@ public class ElementParameter2ParameterType {
} }
} }
private static String getRawValue(String value, EParameterFieldType fileType) {
if (value != null && value.length() > 0 && fileType.equals(EParameterFieldType.PASSWORD)) {
try {
int ind = value.lastIndexOf(PasswordEncryptUtil.ENCRYPT_KEY);
if (ind != -1) {
String encryptedPart = new StringBuilder(value).replace(ind, ind + PasswordEncryptUtil.ENCRYPT_KEY.length(),
"").toString(); //$NON-NLS-1$
String decryptedValue = PasswordEncryptUtil.decryptPassword(encryptedPart);
return decryptedValue;
}
} catch (Exception e) {
ExceptionHandler.process(e);
}
}
return value;
}
} }

View File

@@ -1,12 +0,0 @@
#Fri Feb 05 11:38:53 CST 2010
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=1.5
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.source=1.5

View File

@@ -1,28 +1,32 @@
Manifest-Version: 1.0 Manifest-Version: 1.0
Bundle-ManifestVersion: 2 Bundle-ManifestVersion: 2
Bundle-Name: Hl7 Plug-in Bundle-Name: Hl7 Plug-in
Bundle-SymbolicName: org.talend.designer.hl7;singleton:=true Bundle-SymbolicName: org.talend.designer.hl7;singleton:=true
Bundle-Version: 1.0.0.qualifier Bundle-Version: 1.0.0.qualifier
Require-Bundle: org.eclipse.ui.workbench, Require-Bundle: org.eclipse.ui.workbench,
org.talend.model, org.talend.model,
org.eclipse.core.runtime, org.eclipse.core.runtime,
org.talend.core.runtime, org.talend.core.runtime,
org.talend.commons.ui, org.talend.commons.ui,
org.talend.metadata.managment, org.talend.metadata.managment,
org.talend.metadata.managment.ui, org.talend.metadata.managment.ui,
org.talend.core, org.talend.core,
org.talend.core.ui, org.talend.core.ui,
org.talend.repository, org.talend.repository,
org.talend.designer.core, org.talend.designer.core,
org.talend.designer.codegen, org.talend.designer.codegen,
org.eclipse.jface, org.eclipse.jface,
org.eclipse.gef, org.eclipse.gef,
org.talend.libraries.hl7 org.talend.libraries.hl7
Bundle-ActivationPolicy: lazy Bundle-ActivationPolicy: lazy
Bundle-Vendor: .Talend SA. Bundle-Vendor: .Talend SA.
Bundle-ClassPath: . Bundle-ClassPath: .
Export-Package: org.talend.designer.hl7, Export-Package: org.talend.designer.hl7,
org.talend.designer.hl7.action, org.talend.designer.hl7.action,
org.talend.designer.hl7.ui.data, org.talend.designer.hl7.dnd,
org.talend.designer.hl7.ui.edit, org.talend.designer.hl7.model,
org.talend.designer.hl7.ui.form org.talend.designer.hl7.ui.data,
org.talend.designer.hl7.ui.edit,
org.talend.designer.hl7.ui.form,
org.talend.designer.hl7.ui.header,
org.talend.designer.hl7.util

View File

@@ -1,7 +1,9 @@
#Created by JInto - www.guh-software.de #Created by JInto - www.guh-software.de
FooterComposite.0=Ok FooterComposite.0=Ok
FooterComposite.1=Cancel FooterComposite.1=Cancel
FooterComposite.AutoMap=Auto map! FooterComposite.AutoMap=Auto map!
FooterComposite.AutoMapTip=Map automatically schema to xml tree (for empty column node only) FooterComposite.AutoMapTip=Map automatically schema to xml tree (for empty column node only)
FooterComposite.RootElementError.Title=Error FooterComposite.RootElementError.Title=Error
FooterComposite.RootElementError.Message=Root elements of xml tree should be the same. FooterComposite.RootElementError.Message=Root elements of xml tree should be the same.
SetRepetableAction_removeRepeatable=Remove Repeatable
SetRepetableAction_setAsRepeatable=Set As Repeatable Element

View File

@@ -1,146 +0,0 @@
// ============================================================================
//
// Copyright (C) 2006-2014 Talend Inc. - www.talend.com
//
// This source code is available under agreement available at
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
//
// You should have received a copy of the agreement
// along with this program; if not, write to Talend SA
// 9 rue Pages 92150 Suresnes, France
//
// ============================================================================
package org.talend.designer.hl7.action;
import java.util.List;
import org.eclipse.jface.dialogs.InputDialog;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.ui.actions.SelectionProviderAction;
import org.talend.designer.hl7.ui.HL7UI;
import org.talend.designer.hl7.ui.data.Attribute;
import org.talend.designer.hl7.ui.data.Element;
import org.talend.designer.hl7.ui.data.HL7TreeNode;
import org.talend.repository.ui.swt.utils.AbstractForm;
/**
* bqian Create a xml node. <br/>
*
* $Id: CreateAttributeAction.java,v 1.1 2007/06/12 07:20:38 gke Exp $
*
*/
public class CreateHL7AttributeAction extends SelectionProviderAction {
// the xml viewer, see HL7UI.
private TreeViewer xmlViewer;
private HL7UI hl7ui;
private AbstractForm from;
/**
* CreateNode constructor comment.
*
* @param provider
* @param text
*/
public CreateHL7AttributeAction(TreeViewer xmlViewer, String text) {
super(xmlViewer, text);
this.xmlViewer = xmlViewer;
}
public CreateHL7AttributeAction(TreeViewer xmlViewer, String text, AbstractForm from) {
super(xmlViewer, text);
this.xmlViewer = xmlViewer;
this.from = from;
}
public CreateHL7AttributeAction(TreeViewer xmlViewer, HL7UI hl7ui, String text) {
super(xmlViewer, text);
this.xmlViewer = xmlViewer;
this.hl7ui = hl7ui;
}
public void init() {
HL7TreeNode node = (HL7TreeNode) this.getStructuredSelection().getFirstElement();
if (node == null) {
this.setEnabled(false);
return;
}
if (node.getParent() == null) {
this.setEnabled(false);
return;
}
if (node instanceof Element) {
if (((Element) node).getAttributeChildren().size() > 0) {
this.setEnabled(false);
return;
}
String nodeName = node.getLabel() + "-";
List<HL7TreeNode> childs = ((Element) node).getElementChildren();
if (childs.size() > 0) {
for (HL7TreeNode child : childs) {
if (!child.getLabel().startsWith(nodeName)) {
this.setEnabled(false);
return;
}
}
} else {
this.setEnabled(false);
return;
}
}
if (node.getClass() != Element.class) {
this.setEnabled(false);
return;
}
this.setEnabled(true);
}
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.action.Action#run()
*/
@Override
public void run() {
HL7TreeNode node = (HL7TreeNode) this.getStructuredSelection().getFirstElement();
if (node != null) {
createChildNode(node);
}
}
/**
* Create the child node of the input node
*
* @param node
*/
private void createChildNode(HL7TreeNode node) {
String label = ""; //$NON-NLS-1$
while (!StringUtil.validateLabelForXML(label)) {
InputDialog dialog = new InputDialog(null, "Input attribute's label", "Input the new attribute's valid label", "",
null);
int status = dialog.open();
if (status == InputDialog.OK) {
label = dialog.getValue().trim();
}
if (status == InputDialog.CANCEL) {
return;
}
}
HL7TreeNode child = new Attribute(label);
child.setRow(node.getRow());
node.addChild(child);
this.xmlViewer.refresh();
xmlViewer.expandAll();
if (hl7ui != null) {
hl7ui.redrawLinkers();
} else if (from != null) {
from.refreshLinks();
}
}
}

View File

@@ -1,179 +1,209 @@
// ============================================================================ // ============================================================================
// //
// Copyright (C) 2006-2014 Talend Inc. - www.talend.com // Copyright (C) 2006-2014 Talend Inc. - www.talend.com
// //
// This source code is available under agreement available at // This source code is available under agreement available at
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt // %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
// //
// You should have received a copy of the agreement // You should have received a copy of the agreement
// along with this program; if not, write to Talend SA // along with this program; if not, write to Talend SA
// 9 rue Pages 92150 Suresnes, France // 9 rue Pages 92150 Suresnes, France
// //
// ============================================================================ // ============================================================================
package org.talend.designer.hl7.action; package org.talend.designer.hl7.action;
import org.eclipse.jface.dialogs.IInputValidator; import java.util.HashMap;
import org.eclipse.jface.dialogs.InputDialog; import java.util.List;
import org.eclipse.jface.dialogs.MessageDialog; import java.util.Map;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.ui.actions.SelectionProviderAction; import org.eclipse.jface.dialogs.IInputValidator;
import org.talend.designer.hl7.managers.HL7OutputManager; import org.eclipse.jface.dialogs.InputDialog;
import org.talend.designer.hl7.ui.HL7UI; import org.eclipse.jface.dialogs.MessageDialog;
import org.talend.designer.hl7.ui.data.Attribute; import org.eclipse.jface.viewers.TreeViewer;
import org.talend.designer.hl7.ui.data.Element; import org.eclipse.ui.actions.SelectionProviderAction;
import org.talend.designer.hl7.ui.data.HL7TreeNode; import org.talend.core.model.metadata.IMetadataTable;
import org.talend.designer.hl7.ui.data.NameSpaceNode; import org.talend.core.model.metadata.MetadataTable;
import org.talend.repository.ui.swt.utils.AbstractForm; import org.talend.designer.hl7.managers.HL7OutputManager;
import org.talend.designer.hl7.ui.HL7UI;
/** import org.talend.designer.hl7.ui.data.Attribute;
* bqian Create a xml node. <br/> import org.talend.designer.hl7.ui.data.Element;
* import org.talend.designer.hl7.ui.data.HL7TreeNode;
* $Id: CreateElementAction.java,v 1.1 2007/06/12 07:20:38 gke Exp $ import org.talend.designer.hl7.ui.data.NameSpaceNode;
* import org.talend.repository.ui.swt.utils.AbstractForm;
*/
public class CreateHL7ElementAction extends SelectionProviderAction { /**
* bqian Create a xml node. <br/>
// the xml viewer, see HL7UI. *
private TreeViewer xmlViewer; * $Id: CreateElementAction.java,v 1.1 2007/06/12 07:20:38 gke Exp $
*
private HL7UI hl7ui; */
public class CreateHL7ElementAction extends SelectionProviderAction {
private AbstractForm from;
// the xml viewer, see HL7UI.
/** private TreeViewer xmlViewer;
* CreateNode constructor comment.
* private HL7UI hl7ui;
* @param provider
* @param text private AbstractForm from;
*/
public CreateHL7ElementAction(TreeViewer xmlViewer, String text) { /**
super(xmlViewer, text); * CreateNode constructor comment.
this.xmlViewer = xmlViewer; *
} * @param provider
* @param text
public CreateHL7ElementAction(TreeViewer xmlViewer, String text, AbstractForm from) { */
super(xmlViewer, text); public CreateHL7ElementAction(TreeViewer xmlViewer, String text) {
this.xmlViewer = xmlViewer; super(xmlViewer, text);
this.from = from; this.xmlViewer = xmlViewer;
} }
public CreateHL7ElementAction(TreeViewer xmlViewer, HL7UI hl7ui, String text) { public CreateHL7ElementAction(TreeViewer xmlViewer, String text, AbstractForm from) {
super(xmlViewer, text); super(xmlViewer, text);
this.xmlViewer = xmlViewer; this.xmlViewer = xmlViewer;
this.hl7ui = hl7ui; this.from = from;
} }
public void init() { public CreateHL7ElementAction(TreeViewer xmlViewer, HL7UI hl7ui, String text) {
HL7TreeNode node = (HL7TreeNode) this.getStructuredSelection().getFirstElement(); super(xmlViewer, text);
this.xmlViewer = xmlViewer;
if (node == null) { this.hl7ui = hl7ui;
this.setEnabled(false); }
return;
} public void init() {
// if (node.getParent() == null) { HL7TreeNode node = (HL7TreeNode) this.getStructuredSelection().getFirstElement();
// this.setEnabled(false);
// return; if (node == null) {
// } this.setEnabled(false);
return;
if (node instanceof Attribute) { }
this.setEnabled(false); // if (node.getParent() == null) {
return; // this.setEnabled(false);
} // return;
// }
if (node instanceof NameSpaceNode) {
this.setEnabled(false); if (node instanceof Attribute) {
return; this.setEnabled(false);
} return;
this.setEnabled(true); }
}
if (node instanceof NameSpaceNode) {
/* this.setEnabled(false);
* (non-Javadoc) return;
* }
* @see org.eclipse.jface.action.Action#run() this.setEnabled(true);
*/ }
@Override
public void run() { /*
HL7TreeNode node = (HL7TreeNode) this.getStructuredSelection().getFirstElement(); * (non-Javadoc)
if (createChildNode(node)) { *
if (hl7ui != null) { * @see org.eclipse.jface.action.Action#run()
hl7ui.redrawLinkers(); */
} else if (from != null) { @Override
from.refreshLinks(); public void run() {
} HL7TreeNode node = (HL7TreeNode) this.getStructuredSelection().getFirstElement();
} createChildNode(node);
} }
/** /**
* Create the child node of the input node * Create the child node of the input node
* *
* @param node * @param node
*/ */
private boolean createChildNode(final HL7TreeNode node) { private boolean createChildNode(final HL7TreeNode node) {
if (node.getColumn() != null) { if (node.getColumn() != null) {
if (!MessageDialog.openConfirm( if (!MessageDialog.openConfirm(
xmlViewer.getControl().getShell(), xmlViewer.getControl().getShell(),
"Warning", "Warning",
"Do you want to disconnect the existing linker and then add an sub element for the selected element" "Do you want to disconnect the existing linker and then add an sub element for the selected element"
+ node.getLabel() + "\"?")) { + node.getLabel() + "\"?")) {
return false; return false;
} }
node.setColumn(null); node.setColumn(null);
} }
String label = ""; String label = "";
final String nodeLabel = node.getLabel() + "-"; final String nodeLabel = node.getLabel() + "-";
while (!StringUtil.validateLabelForXML(label)) { while (!StringUtil.validateLabelForXML(label)) {
// add validator // add validator
IInputValidator validator = new IInputValidator() { IInputValidator validator = new IInputValidator() {
public String isValid(String newText) { @Override
if (newText != null) { public String isValid(String newText) {
String text = newText.trim(); if (newText != null) {
for (HL7TreeNode children : node.getChildren()) { String text = newText.trim();
if (text.equals(children.getLabel())) { for (HL7TreeNode children : node.getChildren()) {
return "The name already existed."; //$NON-NLS-1$ if (text.equals(children.getLabel())) {
} return "The name already existed."; //$NON-NLS-1$
} }
} }
return null; }
} return null;
}; }
InputDialog dialog = new InputDialog(null, "Input element's label", "Input the new element's valid label", nodeLabel, };
validator) { InputDialog dialog = new InputDialog(null, "Input element's label", "Input the new element's valid label", nodeLabel,
validator) {
/*
* (non-Javadoc) /*
* * (non-Javadoc)
* @see org.eclipse.jface.dialogs.Dialog#okPressed() *
*/ * @see org.eclipse.jface.dialogs.Dialog#okPressed()
@Override */
protected void okPressed() { @Override
super.okPressed(); protected void okPressed() {
} super.okPressed();
}
};
dialog.setErrorMessage("name is error"); };
int status = dialog.open(); dialog.setErrorMessage("name is error");
if (status == InputDialog.OK) { int status = dialog.open();
label = dialog.getValue().trim(); if (status == InputDialog.OK) {
} label = dialog.getValue().trim();
if (status == InputDialog.CANCEL) { }
return false; if (status == InputDialog.CANCEL) {
} return false;
} }
HL7TreeNode child = new Element(label); }
// if the root not have CurSchema HL7TreeNode child = new Element(label);
if (node.getRow() == null || node.getRow().equals("")) { // if the root not have CurSchema
if (hl7ui != null && hl7ui.gethl7Manager() instanceof HL7OutputManager) { if (node.getRow() == null || node.getRow().equals("")) {
child.setRow(((HL7OutputManager) hl7ui.gethl7Manager()).getCurrentSchema(false)); if (hl7ui != null && hl7ui.gethl7Manager() instanceof HL7OutputManager) {
} if (label.length() == 3) {
} else { child.setRow(label);
child.setRow(node.getRow()); IMetadataTable table = null;
} for (IMetadataTable curTable : hl7ui.gethl7Manager().getHl7Component().getMetadataList()) {
if (label.equals(curTable.getLabel())) {
node.addChild(child); table = curTable;
this.xmlViewer.refresh(); break;
this.xmlViewer.expandAll(); }
return true; }
} if (table == null) {
} table = new MetadataTable();
table.setLabel(label);
table.setTableName(label);
hl7ui.gethl7Manager().getHl7Component().getMetadataList().add(table);
}
List<Map<String, String>> maps = (List<Map<String, String>>) hl7ui.gethl7Manager().getHl7Component()
.getElementParameter("SCHEMAS").getValue(); //$NON-NLS-1$
boolean found = false;
for (Map<String, String> map : maps) {
if (map.get("SCHEMA").equals(table.getTableName())) {
found = true;
}
}
if (!found) {
Map<String, String> hl7Schema = new HashMap<String, String>();
maps.add(hl7Schema);
hl7Schema.put("SCHEMA", table.getTableName());
}
}
} else if (label.length() == 3) {
child.setRow(label);
}
} else {
child.setRow(node.getRow());
}
node.addChild(child);
this.xmlViewer.refresh();
return true;
}
}

View File

@@ -1,136 +1,116 @@
// ============================================================================ // ============================================================================
// //
// Copyright (C) 2006-2014 Talend Inc. - www.talend.com // Copyright (C) 2006-2014 Talend Inc. - www.talend.com
// //
// This source code is available under agreement available at // This source code is available under agreement available at
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt // %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
// //
// You should have received a copy of the agreement // You should have received a copy of the agreement
// along with this program; if not, write to Talend SA // along with this program; if not, write to Talend SA
// 9 rue Pages 92150 Suresnes, France // 9 rue Pages 92150 Suresnes, France
// //
// ============================================================================ // ============================================================================
package org.talend.designer.hl7.action; package org.talend.designer.hl7.action;
import java.util.List; import java.util.List;
import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.ui.actions.SelectionProviderAction; import org.eclipse.ui.actions.SelectionProviderAction;
import org.talend.designer.hl7.ui.HL7UI; import org.talend.designer.hl7.ui.HL7UI;
import org.talend.designer.hl7.ui.data.Attribute; import org.talend.designer.hl7.ui.data.Element;
import org.talend.designer.hl7.ui.data.Element; import org.talend.designer.hl7.ui.data.HL7TreeNode;
import org.talend.designer.hl7.ui.data.HL7TreeNode; import org.talend.repository.ui.swt.utils.AbstractForm;
import org.talend.designer.hl7.ui.data.NameSpaceNode;
import org.talend.repository.ui.swt.utils.AbstractForm; /**
* bqian Create a xml node. <br/>
/** *
* bqian Create a xml node. <br/> * $Id: DeleteNodeAction.java,v 1.1 2007/06/12 07:20:38 gke Exp $
* *
* $Id: DeleteNodeAction.java,v 1.1 2007/06/12 07:20:38 gke Exp $ */
* public class DeleteHL7NodeAction extends SelectionProviderAction {
*/
public class DeleteHL7NodeAction extends SelectionProviderAction { // the xml viewer, see HL7UI.
private TreeViewer xmlViewer;
// the xml viewer, see HL7UI.
private TreeViewer xmlViewer; private HL7UI hl7ui;
private HL7UI hl7ui; private AbstractForm form;
private AbstractForm form; /**
* CreateNode constructor comment.
/** *
* CreateNode constructor comment. * @param provider
* * @param text
* @param provider */
* @param text public DeleteHL7NodeAction(TreeViewer xmlViewer, String text) {
*/ super(xmlViewer, text);
public DeleteHL7NodeAction(TreeViewer xmlViewer, String text) { this.xmlViewer = xmlViewer;
super(xmlViewer, text); }
this.xmlViewer = xmlViewer;
} public DeleteHL7NodeAction(TreeViewer xmlViewer, String text, AbstractForm form) {
super(xmlViewer, text);
public DeleteHL7NodeAction(TreeViewer xmlViewer, String text, AbstractForm form) { this.xmlViewer = xmlViewer;
super(xmlViewer, text); this.form = form;
this.xmlViewer = xmlViewer; }
this.form = form;
} public DeleteHL7NodeAction(TreeViewer xmlViewer, HL7UI hl7ui, String text) {
super(xmlViewer, text);
public DeleteHL7NodeAction(TreeViewer xmlViewer, HL7UI hl7ui, String text) { this.xmlViewer = xmlViewer;
super(xmlViewer, text); this.hl7ui = hl7ui;
this.xmlViewer = xmlViewer; }
this.hl7ui = hl7ui;
} public void init() {
HL7TreeNode node = (HL7TreeNode) this.getStructuredSelection().getFirstElement();
public void init() { if (node == null) {
HL7TreeNode node = (HL7TreeNode) this.getStructuredSelection().getFirstElement(); this.setEnabled(false);
if (node == null) { } else {
this.setEnabled(false); if (node.getParent() == null) {
} else { this.setEnabled(false);
if (node.getParent() == null) { } else {
this.setEnabled(false); this.setEnabled(true);
} else { }
this.setEnabled(true); }
} }
}
} /*
* (non-Javadoc)
/* *
* (non-Javadoc) * @see org.eclipse.jface.action.Action#run()
* */
* @see org.eclipse.jface.action.Action#run() @Override
*/ public void run() {
@Override HL7TreeNode node = (HL7TreeNode) this.getStructuredSelection().getFirstElement();
public void run() { if (node == null) {
HL7TreeNode node = (HL7TreeNode) this.getStructuredSelection().getFirstElement(); return;
if (node == null) { }
return;
} HL7TreeNode parent = node.getParent();
if (parent == null) {
HL7TreeNode parent = node.getParent(); return;
if (parent == null) { }
return; if (node instanceof Element) {
} disconnectSubTree(node);
if (node instanceof Element) { }
disconnectSubTree(node); parent.removeChild(node);
} xmlViewer.refresh(parent);
parent.removeChild(node); }
// if (TreeUtil.refreshTree((HL7TreeNode) xmlViewer.getTree().getItem(0).getData())) {
// xmlViewer.refresh(); /**
// } * DOC ke Comment method "disconnectSubTree".
if (node.isRepetable() || node.isGroup()) { *
// hl7ui.updateStatus(); * @param node
} */
xmlViewer.refresh(parent); private void disconnectSubTree(HL7TreeNode node) {
xmlViewer.expandAll(); if (node == null) {
if (hl7ui != null) { return;
hl7ui.redrawLinkers(); }
} else if (form != null) { if (node.hasLink()) {
form.refreshLinks(); node.setColumn(null);
} }
} List<HL7TreeNode> children = node.getChildren();
for (HL7TreeNode child : children) {
/** disconnectSubTree(child);
* DOC ke Comment method "disconnectSubTree". }
* }
* @param node
*/ }
private void disconnectSubTree(HL7TreeNode node) {
if (node == null) {
return;
}
if (node.hasLink()) {
node.setColumn(null);
}
if (node instanceof Attribute) {
return;
}
if (node instanceof NameSpaceNode) {
return;
}
List<HL7TreeNode> children = node.getChildren();
for (HL7TreeNode child : children) {
disconnectSubTree(child);
}
}
}

View File

@@ -1,453 +1,437 @@
// ============================================================================ // ============================================================================
// //
// Copyright (C) 2006-2014 Talend Inc. - www.talend.com // Copyright (C) 2006-2014 Talend Inc. - www.talend.com
// //
// This source code is available under agreement available at // This source code is available under agreement available at
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt // %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
// //
// You should have received a copy of the agreement // You should have received a copy of the agreement
// along with this program; if not, write to Talend SA // along with this program; if not, write to Talend SA
// 9 rue Pages 92150 Suresnes, France // 9 rue Pages 92150 Suresnes, France
// //
// ============================================================================ // ============================================================================
package org.talend.designer.hl7.action; package org.talend.designer.hl7.action;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import org.eclipse.emf.common.util.EList; import org.eclipse.emf.common.util.EList;
import org.eclipse.gef.commands.Command; import org.eclipse.gef.commands.Command;
import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.swt.widgets.FileDialog; import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.swt.widgets.TreeItem; import org.eclipse.swt.widgets.TreeItem;
import org.eclipse.ui.actions.SelectionProviderAction; import org.eclipse.ui.actions.SelectionProviderAction;
import org.talend.commons.exception.ExceptionHandler; import org.talend.commons.exception.ExceptionHandler;
import org.talend.core.model.metadata.IHL7Constant; import org.talend.core.model.metadata.IHL7Constant;
import org.talend.core.model.metadata.IMetadataTable; import org.talend.core.model.metadata.IMetadataTable;
import org.talend.core.model.metadata.builder.ConvertionHelper; import org.talend.core.model.metadata.builder.ConvertionHelper;
import org.talend.core.model.metadata.builder.connection.ConnectionFactory; import org.talend.core.model.metadata.builder.connection.ConnectionFactory;
import org.talend.core.model.metadata.builder.connection.HL7Connection; import org.talend.core.model.metadata.builder.connection.HL7Connection;
import org.talend.core.model.metadata.builder.connection.HL7FileNode; import org.talend.core.model.metadata.builder.connection.HL7FileNode;
import org.talend.core.model.metadata.builder.connection.MetadataColumn; import org.talend.core.model.metadata.builder.connection.MetadataColumn;
import org.talend.core.model.metadata.builder.connection.MetadataTable; import org.talend.core.model.metadata.builder.connection.MetadataTable;
import org.talend.core.model.process.IConnection; import org.talend.core.model.process.IConnection;
import org.talend.core.model.process.IConnectionCategory; import org.talend.core.model.process.IConnectionCategory;
import org.talend.core.model.process.INode; import org.talend.core.model.utils.NodeUtil;
import org.talend.core.model.utils.NodeUtil; import org.talend.core.runtime.CoreRuntimePlugin;
import org.talend.core.runtime.CoreRuntimePlugin; import org.talend.core.ui.metadata.command.RepositoryChangeMetadataForHL7Command;
import org.talend.core.ui.metadata.command.RepositoryChangeMetadataForHL7Command; import org.talend.designer.hl7.managers.HL7OutputManager;
import org.talend.designer.hl7.managers.HL7OutputManager; import org.talend.designer.hl7.ui.HL7UI;
import org.talend.designer.hl7.ui.HL7UI; import org.talend.designer.hl7.ui.data.Element;
import org.talend.designer.hl7.ui.data.Attribute; import org.talend.designer.hl7.ui.data.HL7TreeNode;
import org.talend.designer.hl7.ui.data.Element; import org.talend.designer.hl7.ui.form.AbstractHL7StepForm;
import org.talend.designer.hl7.ui.data.HL7TreeNode; import org.talend.designer.hl7.ui.header.HL7Parse;
import org.talend.designer.hl7.ui.data.NameSpaceNode; import org.talend.designer.hl7.util.HL7PublicUtil;
import org.talend.designer.hl7.ui.form.AbstractHL7StepForm; import org.talend.repository.model.IProxyRepositoryFactory;
import org.talend.designer.hl7.ui.header.HL7Parse;
import org.talend.designer.hl7.util.HL7PublicUtil; import ca.uhn.hl7v2.model.Message;
import org.talend.repository.model.IProxyRepositoryFactory;
/**
import ca.uhn.hl7v2.model.Message; * DOC hwang class global comment. Detailled comment
*/
/** public class ImportHL7StructureAction extends SelectionProviderAction {
* DOC hwang class global comment. Detailled comment
*/ private TreeViewer xmlViewer;
public class ImportHL7StructureAction extends SelectionProviderAction {
private HL7UI hl7ui;
private TreeViewer xmlViewer;
private AbstractHL7StepForm form;
private HL7UI hl7ui;
private HL7Connection hl7Connection;
private AbstractHL7StepForm form;
private HL7PublicUtil hl7Util = new HL7PublicUtil();
private int order = 1;
private Map<String, Integer> orderMap = new HashMap<String, Integer>();
private HL7Connection hl7Connection;
/**
private HL7PublicUtil hl7Util = new HL7PublicUtil(); * Create constructor comment.
*
private Map<String, Integer> orderMap = new HashMap<String, Integer>(); * @param provider
* @param text
/** */
* Create constructor comment. public ImportHL7StructureAction(HL7Connection hl7Connection, TreeViewer xmlViewer, String text, AbstractHL7StepForm form) {
* super(xmlViewer, text);
* @param provider this.xmlViewer = xmlViewer;
* @param text this.form = form;
*/ this.hl7Connection = hl7Connection;
public ImportHL7StructureAction(HL7Connection hl7Connection, TreeViewer xmlViewer, String text, AbstractHL7StepForm form) { }
super(xmlViewer, text);
this.xmlViewer = xmlViewer; public ImportHL7StructureAction(TreeViewer xmlViewer, HL7UI hl7ui, String text) {
this.form = form; super(xmlViewer, text);
this.hl7Connection = hl7Connection; this.xmlViewer = xmlViewer;
} this.hl7ui = hl7ui;
}
public ImportHL7StructureAction(TreeViewer xmlViewer, HL7UI hl7ui, String text) {
super(xmlViewer, text); private List treeNodeAdapt() {
this.xmlViewer = xmlViewer; List<HL7TreeNode> treeData = new ArrayList<HL7TreeNode>();
this.hl7ui = hl7ui; FileDialog f = null;
} if (hl7ui != null) {
f = new FileDialog(hl7ui.getHl7UIParent().getShell());
private List treeNodeAdapt() { } else if (form != null) {
List<HL7TreeNode> treeData = new ArrayList<HL7TreeNode>(); f = new FileDialog(form.getShell());
FileDialog f = null; }
if (hl7ui != null) { String file = f.open();
f = new FileDialog(hl7ui.getHl7UIParent().getShell()); if (file == null) {
} else if (form != null) { return treeData;
f = new FileDialog(form.getShell()); }
} HL7Parse hl7Parse = new HL7Parse();
String file = f.open(); List<String> msgContentList = new ArrayList<String>();
if (file == null) {
return treeData; List<Message> messageList = hl7Parse.doParse(file, "'\\u000b'", "'\\u001c'");
} List<HL7TreeNode> nodeList = hl7Util.getHL7TreeNodes(messageList);
HL7Parse hl7Parse = new HL7Parse();
List<String> msgContentList = new ArrayList<String>(); if (!nodeList.isEmpty()) {
HL7TreeNode hl7TreeNode = nodeList.get(0);
List<Message> messageList = hl7Parse.doParse(file, "'\\u000b'", "'\\u001c'"); List<HL7FileNode> table = new ArrayList<HL7FileNode>();
List<HL7TreeNode> nodeList = hl7Util.getHL7TreeNodes(messageList); if (hl7Connection != null) {
EList root = hl7Connection.getRoot();
if (!nodeList.isEmpty()) { root.clear();
HL7TreeNode hl7TreeNode = nodeList.get(0); if (hl7TreeNode != null) {
List<HL7FileNode> table = new ArrayList<HL7FileNode>(); hl7Util.initNodeOrder(hl7TreeNode, orderMap);
if (hl7Connection != null) { hl7Util.tableLoader((Element) hl7TreeNode, "", root, hl7TreeNode.getDefaultValue(), orderMap);
EList root = hl7Connection.getRoot(); }
root.clear(); table.addAll(root);
if (hl7TreeNode != null) { } else {
hl7Util.initNodeOrder(hl7TreeNode, orderMap, order); if (hl7TreeNode != null) {
hl7Util.tableLoader((Element) hl7TreeNode, "", root, hl7TreeNode.getDefaultValue(), orderMap); hl7Util.initNodeOrder(hl7TreeNode, orderMap);
} hl7Util.tableLoader((Element) hl7TreeNode, "", table, hl7TreeNode.getDefaultValue(), orderMap);
table.addAll(root); }
} else { }
if (hl7TreeNode != null) {
hl7Util.initNodeOrder(hl7TreeNode, orderMap, order); List<String> schemaList = new ArrayList<String>();
hl7Util.tableLoader((Element) hl7TreeNode, "", table, hl7TreeNode.getDefaultValue(), orderMap); for (HL7FileNode node : table) {
} String columnName = node.getRelatedColumn();
} if (columnName.contains(":")) {
columnName = columnName.substring(0, columnName.indexOf(":"));
List<String> schemaList = new ArrayList<String>(); }
for (HL7FileNode node : table) { if (!schemaList.contains(columnName) && !"".equals(columnName)) {
String columnName = node.getRelatedColumn(); schemaList.add(columnName);
if (columnName.contains(":")) { }
columnName = columnName.substring(0, columnName.indexOf(":")); }
} initXmlTreeData(schemaList, table, treeData);
if (!schemaList.contains(columnName) && !"".equals(columnName)) { }
schemaList.add(columnName); return treeData;
} }
}
initXmlTreeData(schemaList, table, treeData); private void initXmlTreeData(List<String> schemaList, List<HL7FileNode> root, List<HL7TreeNode> treeData) {
} Map<String, HL7TreeNode> mapNodes = new HashMap<String, HL7TreeNode>();
return treeData; List<? extends IConnection> incomingConnections = new ArrayList<IConnection>();
} if (hl7ui != null) {
if (hl7ui.gethl7Manager() instanceof HL7OutputManager) {
private void initXmlTreeData(List<String> schemaList, List<HL7FileNode> root, List<HL7TreeNode> treeData) { ((HL7OutputManager) hl7ui.gethl7Manager()).getContents().clear();
Map<String, HL7TreeNode> mapNodes = new HashMap<String, HL7TreeNode>(); incomingConnections = NodeUtil.getIncomingConnections(hl7ui.gethl7Manager().getHl7Component(),
List<? extends IConnection> incomingConnections = new ArrayList<IConnection>(); IConnectionCategory.FLOW);
if (hl7ui != null) { }
if (hl7ui.gethl7Manager() instanceof HL7OutputManager) { }
((HL7OutputManager) hl7ui.gethl7Manager()).getContents().clear(); IProxyRepositoryFactory factory = CoreRuntimePlugin.getInstance().getProxyRepositoryFactory();
incomingConnections = NodeUtil.getIncomingConnections(hl7ui.gethl7Manager().getHl7Component(), List<MetadataTable> iMetadataTables = new ArrayList<MetadataTable>();
IConnectionCategory.FLOW); HL7TreeNode rootNode = null;
} Map<String, IMetadataTable> schemaNameToInputTable = new HashMap<String, IMetadataTable>();
} Map<String, MetadataTable> schemaNameToOutputTable = new HashMap<String, MetadataTable>();
for (String schemaName : schemaList) {
IProxyRepositoryFactory factory = CoreRuntimePlugin.getInstance().getProxyRepositoryFactory(); IMetadataTable metadataTable = null;
List<MetadataTable> iMetadataTables = new ArrayList<MetadataTable>(); for (IConnection connection : incomingConnections) {
INode targetNode = null; if (connection.getUniqueName().equals(schemaName)) {
HL7TreeNode rootNode = null; metadataTable = connection.getMetadataTable();
for (String rowName : schemaList) { metadataTable.setLabel(connection.getUniqueName());
IMetadataTable metadataTable = null; schemaNameToInputTable.put(schemaName, metadataTable);
for (IConnection connection : incomingConnections) { break;
if (connection.getUniqueName().equals(rowName)) { }
metadataTable = connection.getMetadataTable(); }
metadataTable.setLabel(connection.getUniqueName());
} MetadataTable targetMetadataTable = ConnectionFactory.eINSTANCE.createMetadataTable();
targetNode = connection.getTarget(); targetMetadataTable.setId(factory.getNextId());
} schemaNameToOutputTable.put(schemaName, targetMetadataTable);
targetMetadataTable.setLabel(schemaName);
MetadataTable targetMetadataTable = ConnectionFactory.eINSTANCE.createMetadataTable(); iMetadataTables.add(targetMetadataTable);
targetMetadataTable.setId(factory.getNextId()); }
targetMetadataTable.setLabel(rowName);
iMetadataTables.add(targetMetadataTable); HL7TreeNode current = null;
List<MetadataColumn> columns = new ArrayList<MetadataColumn>(); HL7TreeNode temp = null;
String currentPath = null;
HL7TreeNode current = null; String defaultValue = null;
HL7TreeNode temp = null; int nodeOrder = 0;
HL7TreeNode mainNode = null; boolean haveOrder = true;
String mainPath = null; // build root tree
String currentPath = null; for (int i = 0; i < root.size(); i++) {
String defaultValue = null; HL7FileNode node = root.get(i);
int nodeOrder = 0; String newPath = node.getFilePath();
boolean haveOrder = true; defaultValue = node.getDefaultValue();
String schemaId = rowName + ":";//((MetadataTable) obj).getLabel() + ":"; //$NON-NLS-1$ String columnName = node.getRelatedColumn();
// build root tree // String type = node.getType();
for (int i = 0; i < root.size(); i++) { String orderValue = String.valueOf(node.getOrder());
HL7FileNode node = (HL7FileNode) root.get(i); if (orderValue == null || "".equals(orderValue)) {
String newPath = node.getFilePath(); haveOrder = false;
defaultValue = node.getDefaultValue(); }
String columnName = node.getRelatedColumn(); if (haveOrder) {
// String type = node.getType(); nodeOrder = node.getOrder();
String orderValue = String.valueOf(node.getOrder()); }
if (orderValue == null || "".equals(orderValue)) { String rowName = columnName;
haveOrder = false; if (columnName != null && columnName.contains(":")) {
} String[] names = columnName.split(":");
if (haveOrder) { rowName = names[0];
nodeOrder = node.getOrder(); columnName = names[1];
} } else {
String flag = columnName + ":"; //$NON-NLS-1$ columnName = null;
if (columnName != null && columnName.length() > 0 && !flag.startsWith(schemaId)) { }
continue; temp = this.addElement(current, currentPath, newPath, defaultValue, mapNodes);
} if (temp == null) {
if (node.getAttribute().equals("attri")) { // should not happen
temp = new Attribute(newPath); continue;
temp.setDefaultValue(defaultValue); }
temp.setAttribute(true); // temp.setDataType(type);
// temp.setDataType(type); if (rootNode == null) {
current.addChild(temp); rootNode = temp;
} else if (node.getAttribute().equals("ns")) { }
temp = new NameSpaceNode(newPath); if (node.getAttribute().equals("main")) {
temp.setDefaultValue(defaultValue); temp.setMain(true);
temp.setNameSpace(true); }
// temp.setDataType(type); current = temp;
current.addChild(temp); currentPath = newPath;
} else { if (haveOrder) {
temp = this.addElement(current, currentPath, newPath, defaultValue, mapNodes); temp.setOrder(nodeOrder);
// temp.setDataType(type); }
if (rootNode == null) { if (rowName != null && rowName.length() > 0) {
rootNode = temp; temp.setRow(rowName);
} }
if (node.getAttribute().equals("main")) {
temp.setMain(true); if (columnName != null) {
mainNode = temp; IMetadataTable metadataTable = schemaNameToInputTable.get(rowName);
mainPath = newPath; // group node can not get the metadata table
} if (metadataTable == null) {
current = temp; IMetadataTable metadataTableTemp = null;
currentPath = newPath; for (IConnection connection : incomingConnections) {
} metadataTableTemp = connection.getMetadataTable();
if (haveOrder) { String connectionName = metadataTableTemp.getLabel();
temp.setOrder(nodeOrder); if (connectionName == null) {
} connectionName = connection.getUniqueName();
if (columnName != null && columnName.length() > 0) { }
temp.setRow(rowName); if (columnName.startsWith(connectionName)) {
} break;
}
if (columnName != null && columnName.length() > 0 && columnName.startsWith(schemaId)) { }
columnName = columnName.replace(schemaId, ""); //$NON-NLS-1$ temp.setColumnName(columnName);
// group node can not get the metadata table if (metadataTableTemp != null) {
if (metadataTable == null) { temp.setColumn(metadataTableTemp.getColumn(columnName));
IMetadataTable metadataTableTemp = null; temp.setTable(metadataTableTemp);
for (IConnection connection : incomingConnections) { }
metadataTableTemp = connection.getMetadataTable(); } else {
String connectionName = metadataTableTemp.getLabel(); temp.setColumnName(columnName);
if (connectionName == null) { temp.setColumn(metadataTable.getColumn(columnName));
connectionName = connection.getUniqueName(); temp.setTable(metadataTable);
} }
if (columnName.startsWith(connectionName)) { //
break; if (!temp.isMain()) {
} MetadataColumn newColumn = ConnectionFactory.eINSTANCE.createMetadataColumn();
} newColumn.setLabel(columnName);
if (metadataTableTemp != null) { newColumn.setName(temp.getLabel());
temp.setColumnName(columnName); newColumn.setLength(226);
temp.setColumn(metadataTableTemp.getColumn(columnName)); newColumn.setTalendType("id_String");
temp.setTable(metadataTableTemp); schemaNameToOutputTable.get(rowName).getColumns().add(newColumn);
} }
} else { }
temp.setColumnName(columnName); }
temp.setColumn(metadataTable.getColumn(columnName)); if (rootNode == null) {
temp.setTable(metadataTable); rootNode = new Element("rootTag");
} }
// if (haveOrder) {
if (!temp.isMain()) { orderNode(rootNode);
MetadataColumn newColumn = ConnectionFactory.eINSTANCE.createMetadataColumn(); }
newColumn.setLabel(columnName); if (rootNode != null) {
newColumn.setName(temp.getLabel()); treeData.add(rootNode);
newColumn.setLength(226); }
newColumn.setTalendType("id_String"); if (hl7ui != null) {
columns.add(newColumn); if (hl7ui.gethl7Manager() instanceof HL7OutputManager) {
} ((HL7OutputManager) hl7ui.gethl7Manager()).getContents().put(rootNode.getColumnLabel(), treeData);
} }
}
targetMetadataTable.getColumns().addAll(columns); } else if (form != null) {
if (rootNode == null) { for (HL7TreeNode hl7Node : treeData) {
rootNode = new Element("rootTag"); form.getContents().put(rootNode.getColumnLabel(), hl7Node);
} }
if (haveOrder) { }
orderNode(rootNode); if (hl7ui != null) {
} // execute the commands,initialize the propertiesView .
} List<Command> commands = new ArrayList<Command>();
if (rootNode != null) { for (MetadataTable tableTemp : iMetadataTables) {
treeData.add(rootNode); Command hl7Cmd = new RepositoryChangeMetadataForHL7Command(hl7ui.gethl7Manager().getHl7Component(),
} IHL7Constant.TABLE_SCHEMAS, tableTemp.getLabel(), ConvertionHelper.convert(tableTemp));
if (hl7ui != null) { commands.add(hl7Cmd);
if (hl7ui.gethl7Manager() instanceof HL7OutputManager) { }
((HL7OutputManager) hl7ui.gethl7Manager()).getContents().put(rootNode.getColumnLabel(), treeData); for (Command command : commands) {
} command.execute();
}
} else if (form != null) { }
for (HL7TreeNode hl7Node : treeData) { }
form.getContents().put(rootNode.getColumnLabel(), hl7Node);
} private void orderNode(HL7TreeNode node) {
} // reset the order.
// execute the commands,initialize the propertiesView . if (node != null) {
List<Command> commands = new ArrayList<Command>(); List<HL7TreeNode> firstSubChildren = node.getChildren();
for (MetadataTable tableTemp : iMetadataTables) { HL7TreeNode foundNode = null;
if (targetNode != null) { for (HL7TreeNode childen : firstSubChildren) {
Command hl7Cmd = new RepositoryChangeMetadataForHL7Command(targetNode.getExternalNode(), if (childen.isRepetable()) {
IHL7Constant.TABLE_SCHEMAS, tableTemp.getLabel(), ConvertionHelper.convert(tableTemp)); foundNode = childen;
commands.add(hl7Cmd); sortOrder(foundNode, node);
} break;
} } else if (childen.isGroup()) {
for (Command command : commands) { foundNode = childen;
command.execute(); sortOrder(foundNode, node);
} orderNode(childen);
} } else {
orderNode(childen);
private void orderNode(HL7TreeNode node) { }
// reset the order. }
if (node != null) { }
List<HL7TreeNode> firstSubChildren = node.getChildren(); }
HL7TreeNode foundNode = null;
for (HL7TreeNode childen : firstSubChildren) { private void sortOrder(HL7TreeNode treeNode, HL7TreeNode node) {
if (childen.isRepetable()) { if (node != null) {
foundNode = childen; List<HL7TreeNode> children = node.getChildren();
sortOrder(foundNode, node); if (treeNode != null) {
break; int tmpOrder = 0;
} else if (childen.isGroup()) { int attrNsCount = 0;
foundNode = childen; for (HL7TreeNode child : children) {
sortOrder(foundNode, node); if (child.getOrder() < treeNode.getOrder()) {
orderNode(childen); tmpOrder++;
} else { }
orderNode(childen); if (child.isAttribute() || child.isNameSpace()) {
} attrNsCount++;
} }
} }
} if (tmpOrder > -1) {
int oldOrder = children.indexOf(treeNode);
private void sortOrder(HL7TreeNode treeNode, HL7TreeNode node) { if (oldOrder != -1 && oldOrder != tmpOrder) {
if (node != null) { node.removeChild(treeNode);
List<HL7TreeNode> children = node.getChildren(); if (children.size() > tmpOrder) {
if (treeNode != null) { node.addChild(tmpOrder - attrNsCount, treeNode);
int tmpOrder = 0; } else {
int attrNsCount = 0; node.addChild(treeNode);
for (HL7TreeNode child : children) { }
if (child.getOrder() < treeNode.getOrder()) { }
tmpOrder++; }
} }
if (child.isAttribute() || child.isNameSpace()) { }
attrNsCount++;
} }
}
if (tmpOrder > -1) { protected HL7TreeNode addElement(HL7TreeNode current, String currentPath, String newPath, String defaultValue,
int oldOrder = children.indexOf(treeNode); Map<String, HL7TreeNode> mapNodes) {
if (oldOrder != -1 && oldOrder != tmpOrder) { HL7TreeNode temp = mapNodes.get(newPath);
node.removeChild(treeNode); if (temp == null) {
if (children.size() > tmpOrder) { // if node is not existing, create it.
node.addChild(tmpOrder - attrNsCount, treeNode); String name = newPath.substring(newPath.lastIndexOf("/") + 1); //$NON-NLS-1$
} else { temp = new Element(name, defaultValue);
node.addChild(treeNode); if (current == null) {// root node
} mapNodes.put(newPath, temp);
} return temp;
} }
} mapNodes.put(newPath, temp);
} String parentPath = newPath.substring(0, newPath.lastIndexOf("/")); //$NON-NLS-1$
HL7TreeNode parentNode = mapNodes.get(parentPath);
} if (parentNode != null) {
parentNode.addChild(temp);
protected HL7TreeNode addElement(HL7TreeNode current, String currentPath, String newPath, String defaultValue, } else {
Map<String, HL7TreeNode> mapNodes) { ExceptionHandler.log("Error when parsing the HL7 data, parent not existing for:" + parentPath);
HL7TreeNode temp = mapNodes.get(newPath); }
if (temp == null) { }
// if node is not existing, create it. return temp;
String name = newPath.substring(newPath.lastIndexOf("/") + 1); //$NON-NLS-1$ }
temp = new Element(name, defaultValue);
if (current == null) {// root node /**
mapNodes.put(newPath, temp); *
return temp; * wzhang Comment method "getSelectedSchema".
} *
mapNodes.put(newPath, temp); * @return
String parentPath = newPath.substring(0, newPath.lastIndexOf("/")); //$NON-NLS-1$ */
HL7TreeNode parentNode = mapNodes.get(parentPath); private String getSelectedSchema() {
if (parentNode != null) { TreeItem[] selection = xmlViewer.getTree().getSelection();
parentNode.addChild(temp); if (selection.length > 0) {
} else { Object data = selection[0].getData();
ExceptionHandler.log("Error when parsing the HL7 data, parent not existing for:" + parentPath); if (data instanceof HL7TreeNode) {
} return ((HL7TreeNode) data).getRow();
} }
return temp; }
} return "";// hl7ui.gethl7Manager().getCurrentSchema();
}
/**
* public void init() {
* wzhang Comment method "getSelectedSchema". this.setEnabled(true);
* }
* @return
*/ /*
private String getSelectedSchema() { * (non-Javadoc)
TreeItem[] selection = xmlViewer.getTree().getSelection(); *
if (selection.length > 0) { * @see org.eclipse.jface.action.Action#run()
Object data = selection[0].getData(); */
if (data instanceof HL7TreeNode) { @Override
return ((HL7TreeNode) data).getRow(); public void run() {
} List<HL7TreeNode> newInput = treeNodeAdapt();
} if (newInput.size() == 0) {
return "";// hl7ui.gethl7Manager().getCurrentSchema(); return;
} }
List<HL7TreeNode> treeData = null;
public void init() { if (form != null) {
this.setEnabled(true); treeData = form.getTreeData();
}
} else if (hl7ui != null) {
/* if (hl7ui.gethl7Manager() instanceof HL7OutputManager) {
* (non-Javadoc) treeData = ((HL7OutputManager) hl7ui.gethl7Manager()).getTreeData();
* }
* @see org.eclipse.jface.action.Action#run() }
*/ treeData.clear();
@Override treeData.addAll(newInput);
public void run() { xmlViewer.setInput(treeData);
List<HL7TreeNode> newInput = treeNodeAdapt(); // TreeUtil.guessAndSetLoopNode((HL7TreeNode) xmlViewer.getTree().getItem(0).getData());
if (newInput.size() == 0) { xmlViewer.refresh();
return; xmlViewer.expandAll();
} // hl7ui.updateStatus();
List<HL7TreeNode> treeData = null; // hl7ui.redrawLinkers();
if (form != null) { if (hl7ui != null) {
treeData = form.getTreeData(); hl7ui.redrawLinkers();
} else if (form != null) {
} else if (hl7ui != null) { form.refreshLinks();
if (hl7ui.gethl7Manager() instanceof HL7OutputManager) { }
treeData = ((HL7OutputManager) hl7ui.gethl7Manager()).getTreeData(); }
}
} /*
treeData.clear(); * (non-Javadoc)
treeData.addAll(newInput); *
xmlViewer.setInput(treeData); * @see
// TreeUtil.guessAndSetLoopNode((HL7TreeNode) xmlViewer.getTree().getItem(0).getData()); * org.eclipse.ui.actions.SelectionProviderAction#selectionChanged(org.eclipse.jface.viewers.IStructuredSelection)
xmlViewer.refresh(); */
xmlViewer.expandAll(); @Override
// hl7ui.updateStatus(); public void selectionChanged(IStructuredSelection selection) {
// hl7ui.redrawLinkers(); this.setEnabled(true);
if (hl7ui != null) { HL7TreeNode node = (HL7TreeNode) this.getStructuredSelection().getFirstElement();
hl7ui.redrawLinkers(); if (node != null && form != null) {
} else if (form != null) { // hl7ui.setSelectedText(node.getLabel());
form.refreshLinks(); // Added by Marvin Wang on Sep. 11, 2012 for bug TDI-20702.
} form.setSelectedText(node.getLabel());
} }
}
/*
* (non-Javadoc) }
*
* @see
* org.eclipse.ui.actions.SelectionProviderAction#selectionChanged(org.eclipse.jface.viewers.IStructuredSelection)
*/
@Override
public void selectionChanged(IStructuredSelection selection) {
this.setEnabled(true);
HL7TreeNode node = (HL7TreeNode) this.getStructuredSelection().getFirstElement();
if (node != null && form != null) {
// hl7ui.setSelectedText(node.getLabel());
// Added by Marvin Wang on Sep. 11, 2012 for bug TDI-20702.
form.setSelectedText(node.getLabel());
}
}
}

View File

@@ -1,167 +1,113 @@
// ============================================================================ // ============================================================================
// //
// Copyright (C) 2006-2014 Talend Inc. - www.talend.com // Copyright (C) 2006-2014 Talend Inc. - www.talend.com
// //
// This source code is available under agreement available at // This source code is available under agreement available at
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt // %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
// //
// You should have received a copy of the agreement // You should have received a copy of the agreement
// along with this program; if not, write to Talend SA // along with this program; if not, write to Talend SA
// 9 rue Pages 92150 Suresnes, France // 9 rue Pages 92150 Suresnes, France
// //
// ============================================================================ // ============================================================================
package org.talend.designer.hl7.action; package org.talend.designer.hl7.action;
import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.ui.actions.SelectionProviderAction; import org.eclipse.ui.actions.SelectionProviderAction;
import org.talend.designer.hl7.ui.HL7UI; import org.talend.designer.hl7.i18n.Messages;
import org.talend.designer.hl7.ui.data.Attribute; import org.talend.designer.hl7.ui.HL7UI;
import org.talend.designer.hl7.ui.data.Element; import org.talend.designer.hl7.ui.data.Element;
import org.talend.designer.hl7.ui.data.HL7TreeNode; import org.talend.designer.hl7.ui.data.HL7TreeNode;
import org.talend.designer.hl7.ui.data.NameSpaceNode; import org.talend.repository.ui.swt.utils.AbstractForm;
import org.talend.repository.ui.swt.utils.AbstractForm;
/**
/** * bqian Create a xml node. <br/>
* bqian Create a xml node. <br/> *
* * $Id: CreateElementAction.java,v 1.1 2007/06/12 07:20:38 gke Exp $
* $Id: CreateElementAction.java,v 1.1 2007/06/12 07:20:38 gke Exp $ *
* */
*/ public class SetRepetableAction extends SelectionProviderAction {
public class SetRepetableAction extends SelectionProviderAction {
/**
// the xml viewer, see HL7UI. *
private TreeViewer xmlViewer; */
private static final String REMOVE_REPEATABLE = Messages.getString("SetRepetableAction_removeRepeatable"); //$NON-NLS-1$
private HL7UI hl7ui;
/**
private boolean value; *
*/
private AbstractForm form; private static final String SET_AS_REPEATABLE_ELEMENT = Messages.getString("SetRepetableAction_setAsRepeatable"); //$NON-NLS-1$
/** // the xml viewer, see HL7UI.
* SetForLoopAction constructor comment. private TreeViewer xmlViewer;
*
* @param provider public SetRepetableAction(TreeViewer xmlViewer, AbstractForm form) {
* @param text super(xmlViewer, SET_AS_REPEATABLE_ELEMENT);
*/ this.xmlViewer = xmlViewer;
public SetRepetableAction(TreeViewer xmlViewer, String text) { }
super(xmlViewer, text);
this.xmlViewer = xmlViewer; /**
} *
* SetForLoopAction constructor comment.
public SetRepetableAction(TreeViewer xmlViewer, String text, AbstractForm form) { *
super(xmlViewer, text); * @param xmlViewer
this.xmlViewer = xmlViewer; * @param text
this.form = form; * @param hl7ui
} */
public SetRepetableAction(TreeViewer xmlViewer, HL7UI hl7ui, String text, boolean value) {
/** super(xmlViewer, text);
* this.xmlViewer = xmlViewer;
* SetForLoopAction constructor comment. }
*
* @param xmlViewer public void init() {
* @param text setText(SET_AS_REPEATABLE_ELEMENT);
* @param hl7ui HL7TreeNode node = (HL7TreeNode) this.getStructuredSelection().getFirstElement();
*/ if (node == null) {
public SetRepetableAction(TreeViewer xmlViewer, HL7UI hl7ui, String text, boolean value) { this.setEnabled(false);
super(xmlViewer, text); return;
this.xmlViewer = xmlViewer; }
this.hl7ui = hl7ui; if (node.isRepetable()) {
this.value = value; this.setEnabled(true);
} this.setText(REMOVE_REPEATABLE);
return;
public void init() { }
HL7TreeNode node = (HL7TreeNode) this.getStructuredSelection().getFirstElement(); if (node.getLabel().length() != 3) {
if (node == null) { this.setEnabled(false);
this.setEnabled(false); return;
return; }
} this.setEnabled(true);
if (node.getParent() == null) { }
this.setEnabled(false);
return; /*
} * (non-Javadoc)
if (node.getParent().getParent() != null) { *
this.setEnabled(false); * @see org.eclipse.jface.action.Action#run()
return; */
} @Override
if (node.isRepetable()) { public void run() {
this.setEnabled(false); HL7TreeNode node = (HL7TreeNode) this.getStructuredSelection().getFirstElement();
return;
} if (!node.isRepetable()) {
if (!node.isMain()) { if (node.isGroup()) {
this.setEnabled(false); node.setGroup(false);
return; }
} node.setRepetable(true);
node.setMain(true);
if (node instanceof Attribute) { upsetMainNode(node);
this.setEnabled(false); } else {
return; node.setRepetable(false);
} }
xmlViewer.refresh();
if (node instanceof NameSpaceNode) { }
this.setEnabled(false);
return; public void upsetMainNode(HL7TreeNode node) {
} if (node instanceof Element) {
this.setEnabled(true); HL7TreeNode parent = node;
} while (parent != null) {
parent.setMain(true);
/* parent = parent.getParent();
* (non-Javadoc) }
*
* @see org.eclipse.jface.action.Action#run() }
*/ }
@Override }
public void run() {
HL7TreeNode node = (HL7TreeNode) this.getStructuredSelection().getFirstElement();
if (node.isRepetable()) {
return;
}
// HL7Manager hl7Manager = hl7ui.gethl7Manager();
// HL7TreeNode rootTreeData = hl7Manager.getRootHL7TreeNode(node);
// TreeUtil.clearSubGroupNode(node);
// // make sure group element is a ancestor of loop, or no group element.
// if (TreeUtil.findUpGroupNode(node) == null) {
// TreeUtil.clearSubGroupNode(rootTreeData);
// }
// TreeUtil.clearLoopNode(rootTreeData);
// TreeUtil.clearMainNode(rootTreeData);
if (node.isGroup()) {
node.setGroup(false);
}
node.setRepetable(true);
// if (this.value) {
// if (hl7ui != null && node.isGroup()) {
// // hl7ui.updateStatus();
// }
// // TreeUtil.upsetMainNode(node);
// // xmlViewer.refresh();
// } else {
// // if (hl7ui != null) {
// // hl7ui.updateStatus();
// // }
// // upsetMainNode(node);
// // xmlViewer.refresh();
// }
upsetMainNode(node);
xmlViewer.refresh();
if (form != null) {
form.refreshLinks();
}
// this.hl7ui.updateStatus();
}
public void upsetMainNode(HL7TreeNode node) {
if (node instanceof Element) {
HL7TreeNode parent = node;
while (parent != null) {
parent.setMain(true);
parent = parent.getParent();
}
}
}
}

View File

@@ -1,209 +0,0 @@
package org.talend.designer.hl7.edit;
// ============================================================================
//
// Copyright (C) 2006-2014 Talend Inc. - www.talend.com
//
// This source code is available under agreement available at
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
//
// You should have received a copy of the agreement
// along with this program; if not, write to Talend SA
// 9 rue Pages 92150 Suresnes, France
//
// ============================================================================
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import org.eclipse.swt.SWT;
import org.eclipse.swt.dnd.ByteArrayTransfer;
import org.eclipse.swt.dnd.DND;
import org.eclipse.swt.dnd.DragSource;
import org.eclipse.swt.dnd.DragSourceAdapter;
import org.eclipse.swt.dnd.DragSourceEvent;
import org.eclipse.swt.dnd.DropTarget;
import org.eclipse.swt.dnd.DropTargetAdapter;
import org.eclipse.swt.dnd.DropTargetEvent;
import org.eclipse.swt.dnd.Transfer;
import org.eclipse.swt.dnd.TransferData;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
public class Snippet79 {
/*
* The data being transferred is an <bold>array of type MyType</bold> where MyType is define as:
*/
static class MyType {
String fileName;
long fileLength;
long lastModified;
}
static class MyTransfer extends ByteArrayTransfer {
private static final String MYTYPENAME = "name_for_my_type";
private static final int MYTYPEID = registerType(MYTYPENAME);
private static MyTransfer _instance = new MyTransfer();
public static MyTransfer getInstance() {
return _instance;
}
public void javaToNative(Object object, TransferData transferData) {
if (!checkMyType(object) || !isSupportedType(transferData)) {
DND.error(DND.ERROR_INVALID_DATA);
}
MyType[] myTypes = (MyType[]) object;
try {
// write data to a byte array and then ask super to convert to
// pMedium
ByteArrayOutputStream out = new ByteArrayOutputStream();
DataOutputStream writeOut = new DataOutputStream(out);
for (int i = 0, length = myTypes.length; i < length; i++) {
byte[] buffer = myTypes[i].fileName.getBytes();
writeOut.writeInt(buffer.length);
writeOut.write(buffer);
writeOut.writeLong(myTypes[i].fileLength);
writeOut.writeLong(myTypes[i].lastModified);
}
byte[] buffer = out.toByteArray();
writeOut.close();
super.javaToNative(buffer, transferData);
} catch (IOException e) {
}
}
public Object nativeToJava(TransferData transferData) {
if (isSupportedType(transferData)) {
byte[] buffer = (byte[]) super.nativeToJava(transferData);
if (buffer == null)
return null;
MyType[] myData = new MyType[0];
try {
ByteArrayInputStream in = new ByteArrayInputStream(buffer);
DataInputStream readIn = new DataInputStream(in);
while (readIn.available() > 20) {
MyType datum = new MyType();
int size = readIn.readInt();
byte[] name = new byte[size];
readIn.read(name);
datum.fileName = new String(name);
datum.fileLength = readIn.readLong();
datum.lastModified = readIn.readLong();
MyType[] newMyData = new MyType[myData.length + 1];
System.arraycopy(myData, 0, newMyData, 0, myData.length);
newMyData[myData.length] = datum;
myData = newMyData;
}
readIn.close();
} catch (IOException ex) {
return null;
}
return myData;
}
return null;
}
protected String[] getTypeNames() {
return new String[] { MYTYPENAME };
}
protected int[] getTypeIds() {
return new int[] { MYTYPEID };
}
boolean checkMyType(Object object) {
if (object == null || !(object instanceof MyType[]) || ((MyType[]) object).length == 0) {
return false;
}
MyType[] myTypes = (MyType[]) object;
for (int i = 0; i < myTypes.length; i++) {
if (myTypes[i] == null || myTypes[i].fileName == null || myTypes[i].fileName.length() == 0) {
return false;
}
}
return true;
}
protected boolean validate(Object object) {
return checkMyType(object);
}
}
public static void main(String[] args) {
Display display = new Display();
Shell shell = new Shell(display);
shell.setLayout(new FillLayout());
final Label label1 = new Label(shell, SWT.BORDER | SWT.WRAP);
label1.setText("Drag Source for MyData[]");
final Label label2 = new Label(shell, SWT.BORDER | SWT.WRAP);
label2.setText("Drop Target for MyData[]");
DragSource source = new DragSource(label1, DND.DROP_COPY);
source.setTransfer(new Transfer[] { MyTransfer.getInstance() });
source.addDragListener(new DragSourceAdapter() {
public void dragSetData(DragSourceEvent event) {
MyType myType1 = new MyType();
myType1.fileName = "C:\\abc.txt";
myType1.fileLength = 1000;
myType1.lastModified = 12312313;
MyType myType2 = new MyType();
myType2.fileName = "C:\\xyz.txt";
myType2.fileLength = 500;
myType2.lastModified = 12312323;
event.data = new MyType[] { myType1, myType2 };
}
});
DropTarget target = new DropTarget(label2, DND.DROP_COPY | DND.DROP_DEFAULT);
target.setTransfer(new Transfer[] { MyTransfer.getInstance() });
target.addDropListener(new DropTargetAdapter() {
public void dragEnter(DropTargetEvent event) {
if (event.detail == DND.DROP_DEFAULT) {
event.detail = DND.DROP_COPY;
}
}
public void dragOperationChanged(DropTargetEvent event) {
if (event.detail == DND.DROP_DEFAULT) {
event.detail = DND.DROP_COPY;
}
}
public void drop(DropTargetEvent event) {
if (event.data != null) {
MyType[] myTypes = (MyType[]) event.data;
if (myTypes != null) {
String string = "";
for (int i = 0; i < myTypes.length; i++) {
string += myTypes[i].fileName + " ";
}
label2.setText(string);
}
}
}
});
shell.setSize(200, 200);
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
}

View File

@@ -1,170 +0,0 @@
// ============================================================================
//
// Copyright (C) 2006-2014 Talend Inc. - www.talend.com
//
// This source code is available under agreement available at
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
//
// You should have received a copy of the agreement
// along with this program; if not, write to Talend SA
// 9 rue Pages 92150 Suresnes, France
//
// ============================================================================
package org.talend.designer.hl7.edit;
import org.eclipse.swt.SWT;
import org.eclipse.swt.dnd.DND;
import org.eclipse.swt.dnd.DragSource;
import org.eclipse.swt.dnd.DragSourceEvent;
import org.eclipse.swt.dnd.DragSourceListener;
import org.eclipse.swt.dnd.DropTarget;
import org.eclipse.swt.dnd.DropTargetAdapter;
import org.eclipse.swt.dnd.DropTargetEvent;
import org.eclipse.swt.dnd.TextTransfer;
import org.eclipse.swt.dnd.Transfer;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Tree;
import org.eclipse.swt.widgets.TreeItem;
public class Snippet91 {
public static void main(String[] args) {
final Display display = new Display();
final Shell shell = new Shell(display);
shell.setLayout(new FillLayout());
final Tree tree = new Tree(shell, SWT.BORDER);
for (int i = 0; i < 3; i++) {
TreeItem item = new TreeItem(tree, SWT.NONE);
item.setText("item " + i);
for (int j = 0; j < 3; j++) {
TreeItem subItem = new TreeItem(item, SWT.NONE);
subItem.setText("item " + i + " " + j);
for (int k = 0; k < 3; k++) {
TreeItem subsubItem = new TreeItem(subItem, SWT.NONE);
subsubItem.setText("item " + i + " " + j + " " + k);
}
}
}
Transfer[] types = new Transfer[] { TextTransfer.getInstance() };
int operations = DND.DROP_MOVE | DND.DROP_COPY | DND.DROP_LINK;
final DragSource source = new DragSource(tree, operations);
source.setTransfer(types);
final TreeItem[] dragSourceItem = new TreeItem[1];
source.addDragListener(new DragSourceListener() {
public void dragStart(DragSourceEvent event) {
TreeItem[] selection = tree.getSelection();
if (selection.length > 0 && selection[0].getItemCount() == 0) {
event.doit = true;
dragSourceItem[0] = selection[0];
} else {
event.doit = false;
}
};
public void dragSetData(DragSourceEvent event) {
event.data = dragSourceItem[0].getText();
}
public void dragFinished(DragSourceEvent event) {
if (event.detail == DND.DROP_MOVE)
dragSourceItem[0].dispose();
dragSourceItem[0] = null;
}
});
DropTarget target = new DropTarget(tree, operations);
target.setTransfer(types);
target.addDropListener(new DropTargetAdapter() {
public void dragOver(DropTargetEvent event) {
event.feedback = DND.FEEDBACK_EXPAND | DND.FEEDBACK_SCROLL;
if (event.item != null) {
TreeItem item = (TreeItem) event.item;
Point pt = display.map(null, tree, event.x, event.y);
Rectangle bounds = item.getBounds();
if (pt.y < bounds.y + bounds.height / 3) {
event.feedback |= DND.FEEDBACK_INSERT_BEFORE;
} else if (pt.y > bounds.y + 2 * bounds.height / 3) {
event.feedback |= DND.FEEDBACK_INSERT_AFTER;
} else {
event.feedback |= DND.FEEDBACK_SELECT;
}
}
}
public void drop(DropTargetEvent event) {
if (event.data == null) {
event.detail = DND.DROP_NONE;
return;
}
String text = (String) event.data;
if (event.item == null) {
TreeItem item = new TreeItem(tree, SWT.NONE);
item.setText(text);
} else {
TreeItem item = (TreeItem) event.item;
Point pt = display.map(null, tree, event.x, event.y);
Rectangle bounds = item.getBounds();
TreeItem parent = item.getParentItem();
if (parent != null) {
TreeItem[] items = parent.getItems();
int index = 0;
for (int i = 0; i < items.length; i++) {
if (items[i] == item) {
index = i;
break;
}
}
if (pt.y < bounds.y + bounds.height / 3) {
TreeItem newItem = new TreeItem(parent, SWT.NONE, index);
newItem.setText(text);
} else if (pt.y > bounds.y + 2 * bounds.height / 3) {
TreeItem newItem = new TreeItem(parent, SWT.NONE, index + 1);
newItem.setText(text);
} else {
TreeItem newItem = new TreeItem(item, SWT.NONE);
newItem.setText(text);
}
} else {
TreeItem[] items = tree.getItems();
int index = 0;
for (int i = 0; i < items.length; i++) {
if (items[i] == item) {
index = i;
break;
}
}
if (pt.y < bounds.y + bounds.height / 3) {
TreeItem newItem = new TreeItem(tree, SWT.NONE, index);
newItem.setText(text);
} else if (pt.y > bounds.y + 2 * bounds.height / 3) {
TreeItem newItem = new TreeItem(tree, SWT.NONE, index + 1);
newItem.setText(text);
} else {
TreeItem newItem = new TreeItem(item, SWT.NONE);
newItem.setText(text);
}
}
}
}
});
shell.setSize(400, 400);
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
}

View File

@@ -1,101 +1,140 @@
// ============================================================================ // ============================================================================
// //
// Copyright (C) 2006-2014 Talend Inc. - www.talend.com // Copyright (C) 2006-2014 Talend Inc. - www.talend.com
// //
// This source code is available under agreement available at // This source code is available under agreement available at
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt // %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
// //
// You should have received a copy of the agreement // You should have received a copy of the agreement
// along with this program; if not, write to Talend SA // along with this program; if not, write to Talend SA
// 9 rue Pages 92150 Suresnes, France // 9 rue Pages 92150 Suresnes, France
// //
// ============================================================================ // ============================================================================
package org.talend.designer.hl7.model; package org.talend.designer.hl7.model;
import java.util.ArrayList; import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import ca.uhn.hl7v2.HL7Exception; import java.util.ArrayList;
import ca.uhn.hl7v2.model.Segment;
import ca.uhn.hl7v2.model.Structure; import ca.uhn.hl7v2.HL7Exception;
import ca.uhn.hl7v2.model.Type; import ca.uhn.hl7v2.model.Segment;
import ca.uhn.hl7v2.model.Structure;
/** import ca.uhn.hl7v2.model.Type;
* DOC Administrator class global comment. Detailled comment
*/ /**
public class SegmentModel extends AbstractStructureModel { * DOC Administrator class global comment. Detailled comment
*/
private Segment seg; public class SegmentModel extends AbstractStructureModel {
private int folderIndex, subfolderIndex; private Segment seg;
private TypeModel[] types; private int folderIndex, subfolderIndex;
public SegmentModel(Segment seg, Structure parent, int folderIndex, int subfolderIndex) { private TypeModel[] types;
this.seg = seg;
this.parent = parent; public SegmentModel(Segment seg, Structure parent, int folderIndex, int subfolderIndex) {
this.folderIndex = folderIndex; this.seg = seg;
this.subfolderIndex = subfolderIndex; this.parent = parent;
generateDataTypes(); this.folderIndex = folderIndex;
} this.subfolderIndex = subfolderIndex;
generateDataTypes();
@Override }
protected void generateDisplayName() {
this.displayName = seg.getName(); @Override
} protected void generateDisplayName() {
this.displayName = seg.getName();
private void generateDataTypes() { }
int number = this.seg.numFields();
ArrayList<TypeModel> datatypes = new ArrayList<TypeModel>(); private void generateDataTypes() {
try { int number = this.seg.numFields();
int lastNotEmptyFiledIndex = 0; ArrayList<TypeModel> datatypes = new ArrayList<TypeModel>();
for (int i = 1; i < number; i++) { Method method = null;
Type[] reps = seg.getField(i); try {
if (reps.length > 0) { for (Method curMethod : seg.getClass().getDeclaredMethods()) {
lastNotEmptyFiledIndex = i; if (curMethod.getName().equals("createNewTypeWithoutReflection")) {
} method = curMethod;
} method.setAccessible(true);
for (int i = 1; i <= lastNotEmptyFiledIndex; i++) { break;
Type[] reps = seg.getField(i); }
if (reps.length > 0) { }
for (int j = 0; j < reps.length; j++) {
TypeModel tm = new TypeModel(reps[j], seg, j, i); if (method != null) {
datatypes.add(tm); // only access we have to get all the types is reflection (protected method).
} // so add test of null in case this method doesn't exist, even if it should be in every subclass.
} else { for (int i = 0; i < number; i++) {
// for empty column
TypeModel tm = new TypeModel(null, seg, 0, i); Type type = (Type) method.invoke(seg, i);
datatypes.add(tm); TypeModel tm = new TypeModel(type, seg, 0, i + 1);
} datatypes.add(tm);
}
} }
} catch (HL7Exception e) { } catch (SecurityException e) {
e.printStackTrace(); // TODO Auto-generated catch block
} e.printStackTrace();
this.types = datatypes.toArray(new TypeModel[0]); } catch (IllegalArgumentException e) {
} // TODO Auto-generated catch block
e.printStackTrace();
public TypeModel[] getTypes() { } catch (IllegalAccessException e) {
return this.types; // TODO Auto-generated catch block
} e.printStackTrace();
} catch (InvocationTargetException e) {
public Segment getSeg() { // TODO Auto-generated catch block
return this.seg; e.printStackTrace();
} }
if (method == null) {
public int getFolderIndex() { // use old code in case the reflection didn't work.
return this.folderIndex; // but it means it won't get optional fields.
} try {
int lastNotEmptyFiledIndex = 0;
public int getSubfolderIndex() { for (int i = 1; i < number; i++) {
return this.subfolderIndex; Type[] reps = seg.getField(i);
} if (reps.length > 0) {
lastNotEmptyFiledIndex = i;
@Override }
public boolean equals(Object obj) { }
if (obj instanceof SegmentModel) { for (int i = 1; i <= lastNotEmptyFiledIndex; i++) {
return this.getSeg().getName().equals(((SegmentModel) obj).getSeg().getName()); Type[] reps = seg.getField(i);
} if (reps.length > 0) {
return super.equals(obj); for (int j = 0; j < reps.length; j++) {
} TypeModel tm = new TypeModel(reps[j], seg, j, i);
datatypes.add(tm);
} }
} else {
// for empty column
TypeModel tm = new TypeModel(null, seg, 0, i);
datatypes.add(tm);
}
}
} catch (HL7Exception e) {
e.printStackTrace();
}
}
this.types = datatypes.toArray(new TypeModel[0]);
}
public TypeModel[] getTypes() {
return this.types;
}
public Segment getSeg() {
return this.seg;
}
public int getFolderIndex() {
return this.folderIndex;
}
public int getSubfolderIndex() {
return this.subfolderIndex;
}
@Override
public boolean equals(Object obj) {
if (obj instanceof SegmentModel) {
return this.getSeg().getName().equals(((SegmentModel) obj).getSeg().getName());
}
return super.equals(obj);
}
}

View File

@@ -1,157 +1,155 @@
// ============================================================================ // ============================================================================
// //
// Copyright (C) 2006-2014 Talend Inc. - www.talend.com // Copyright (C) 2006-2014 Talend Inc. - www.talend.com
// //
// This source code is available under agreement available at // This source code is available under agreement available at
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt // %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
// //
// You should have received a copy of the agreement // You should have received a copy of the agreement
// along with this program; if not, write to Talend SA // along with this program; if not, write to Talend SA
// 9 rue Pages 92150 Suresnes, France // 9 rue Pages 92150 Suresnes, France
// //
// ============================================================================ // ============================================================================
package org.talend.designer.hl7.model; package org.talend.designer.hl7.model;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import org.talend.core.model.utils.TalendTextUtils; import org.talend.core.model.utils.TalendTextUtils;
import ca.uhn.hl7v2.HL7Exception; import ca.uhn.hl7v2.HL7Exception;
import ca.uhn.hl7v2.model.Composite; import ca.uhn.hl7v2.model.Composite;
import ca.uhn.hl7v2.model.DataTypeException; import ca.uhn.hl7v2.model.DataTypeException;
import ca.uhn.hl7v2.model.GenericComposite; import ca.uhn.hl7v2.model.GenericComposite;
import ca.uhn.hl7v2.model.GenericPrimitive; import ca.uhn.hl7v2.model.GenericPrimitive;
import ca.uhn.hl7v2.model.Primitive; import ca.uhn.hl7v2.model.Primitive;
import ca.uhn.hl7v2.model.Structure; import ca.uhn.hl7v2.model.Structure;
import ca.uhn.hl7v2.model.Type; import ca.uhn.hl7v2.model.Type;
import ca.uhn.hl7v2.model.Varies; import ca.uhn.hl7v2.model.Varies;
import ca.uhn.hl7v2.util.Terser; import ca.uhn.hl7v2.util.Terser;
/** /**
* DOC Administrator class global comment. Detailled comment * DOC Administrator class global comment. Detailled comment
*/ */
public class TypeModel extends AbstractStructureModel { public class TypeModel extends AbstractStructureModel {
private Type type; private Type type;
private int index; private int index;
private int rep; private int rep;
private Terser terser; private Terser terser;
private PrimitiveModel[] primitives; private PrimitiveModel[] primitives;
public Type getType() { public Type getType() {
return this.type; return this.type;
} }
public TypeModel(Type type, Structure parent, int rep, int index) { public TypeModel(Type type, Structure parent, int rep, int index) {
this.type = type; this.type = type;
this.parent = parent; this.parent = parent;
this.rep = rep; this.rep = rep;
this.index = index; this.index = index;
generatePrimitive(); generatePrimitive();
} }
@Override @Override
protected void generateDisplayName() { protected void generateDisplayName() {
String typeDispaly = type == null ? "" : TalendTextUtils.LBRACKET + this.type.getName() + TalendTextUtils.RBRACKET; String typeDisplay = type == null ? "" : TalendTextUtils.LBRACKET + this.type.getName() + TalendTextUtils.RBRACKET;
this.displayName = getParent().getName() + "-" + index + "(" + (++rep) + ")" + typeDispaly; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ this.displayName = getParent().getName() + "-" + index + "(1)" + typeDisplay; //$NON-NLS-1$ //$NON-NLS-2$
} }
private void generatePrimitive() { private void generatePrimitive() {
if (type != null) { if (type != null) {
List<PrimitiveModel> pms = new ArrayList<PrimitiveModel>(); List<PrimitiveModel> pms = new ArrayList<PrimitiveModel>();
int numComp = Terser.numComponents(this.type); int numComp = Terser.numComponents(this.type);
for (int k = 1; k <= numComp; k++) { for (int k = 1; k <= numComp; k++) {
int numSubComp = Terser.numSubComponents(this.type, k); int numSubComp = Terser.numSubComponents(this.type, k);
for (int m = 1; m <= numSubComp; m++) { for (int m = 1; m <= numSubComp; m++) {
Primitive p = getPrimitive(this.type, k, m); Primitive p = getPrimitive(this.type, k, m);
if (p.getValue() != null) { PrimitiveModel pm = new PrimitiveModel(this, p, k, m);
PrimitiveModel pm = new PrimitiveModel(this, p, k, m); pms.add(pm);
pms.add(pm); }
} }
} primitives = pms.toArray(new PrimitiveModel[0]);
} } else {
primitives = pms.toArray(new PrimitiveModel[0]); PrimitiveModel pm = new PrimitiveModel(this, null, 1, 1);
} else { primitives = new PrimitiveModel[] { pm };
PrimitiveModel pm = new PrimitiveModel(this, null, 1, 1); }
primitives = new PrimitiveModel[] { pm }; }
}
} public Primitive getPrimitive(Type type, int component, int subcomponent) {
Type comp = getComponent(type, component);
public Primitive getPrimitive(Type type, int component, int subcomponent) { Type sub = getComponent(comp, subcomponent);
Type comp = getComponent(type, component); return getPrimitive(sub);
Type sub = getComponent(comp, subcomponent); }
return getPrimitive(sub);
} private int numStandardComponents(Type t) {
int n = 0;
private int numStandardComponents(Type t) { if (Varies.class.isAssignableFrom(t.getClass())) {
int n = 0; n = numStandardComponents(((Varies) t).getData());
if (Varies.class.isAssignableFrom(t.getClass())) { } else if (Composite.class.isAssignableFrom(t.getClass())) {
n = numStandardComponents(((Varies) t).getData()); n = ((Composite) t).getComponents().length;
} else if (Composite.class.isAssignableFrom(t.getClass())) { } else {
n = ((Composite) t).getComponents().length; n = 1;
} else { }
n = 1; return n;
} }
return n;
} private Type getComponent(Type type, int comp) {
Type ret = null;
private Type getComponent(Type type, int comp) { if (Varies.class.isAssignableFrom(type.getClass())) {
Type ret = null; Varies v = (Varies) type;
if (Varies.class.isAssignableFrom(type.getClass())) {
Varies v = (Varies) type; try {
if (comp > 1 && GenericPrimitive.class.isAssignableFrom(v.getData().getClass())) {
try { v.setData(new GenericComposite(v.getMessage()));
if (comp > 1 && GenericPrimitive.class.isAssignableFrom(v.getData().getClass())) { }
v.setData(new GenericComposite(v.getMessage())); } catch (DataTypeException de) {
} String message = "Unexpected exception copying data to generic composite: " + de.getMessage();
} catch (DataTypeException de) { throw new Error(message);
String message = "Unexpected exception copying data to generic composite: " + de.getMessage(); }
throw new Error(message);
} ret = getComponent(v.getData(), comp);
} else {
ret = getComponent(v.getData(), comp); if (Primitive.class.isAssignableFrom(type.getClass()) && comp == 1) {
} else { ret = type;
if (Primitive.class.isAssignableFrom(type.getClass()) && comp == 1) { } else if (GenericComposite.class.isAssignableFrom(type.getClass())
ret = type; || (Composite.class.isAssignableFrom(type.getClass()) && comp <= numStandardComponents(type))) {
} else if (GenericComposite.class.isAssignableFrom(type.getClass()) // note that GenericComposite can return components > number of standard components
|| (Composite.class.isAssignableFrom(type.getClass()) && comp <= numStandardComponents(type))) {
// note that GenericComposite can return components > number of standard components try {
ret = ((Composite) type).getComponent(comp - 1);
try { } catch (Exception e) {
ret = ((Composite) type).getComponent(comp - 1); throw new Error("Internal error: HL7Exception thrown on getComponent(x) where x < # standard components.", e);
} catch (Exception e) { }
throw new Error("Internal error: HL7Exception thrown on getComponent(x) where x < # standard components.", e); } else {
} ret = type.getExtraComponents().getComponent(comp - numStandardComponents(type) - 1);
} else { }
ret = type.getExtraComponents().getComponent(comp - numStandardComponents(type) - 1); }
} return ret;
} }
return ret;
} private Primitive getPrimitive(Type type) {
Primitive p = null;
private Primitive getPrimitive(Type type) { if (Varies.class.isAssignableFrom(type.getClass())) {
Primitive p = null; p = getPrimitive(((Varies) type).getData());
if (Varies.class.isAssignableFrom(type.getClass())) { } else if (Composite.class.isAssignableFrom(type.getClass())) {
p = getPrimitive(((Varies) type).getData()); try {
} else if (Composite.class.isAssignableFrom(type.getClass())) { p = getPrimitive(((Composite) type).getComponent(0));
try { } catch (HL7Exception e) {
p = getPrimitive(((Composite) type).getComponent(0)); throw new Error("Internal error: HL7Exception thrown on Composite.getComponent(0).");
} catch (HL7Exception e) { }
throw new Error("Internal error: HL7Exception thrown on Composite.getComponent(0)."); } else if (type instanceof Primitive) {
} p = (Primitive) type;
} else if (type instanceof Primitive) { }
p = (Primitive) type; return p;
} }
return p;
} public PrimitiveModel[] getPrimitives() {
return this.primitives;
public PrimitiveModel[] getPrimitives() { }
return this.primitives; }
}
}

View File

@@ -1,390 +1,390 @@
// ============================================================================ // ============================================================================
// //
// Copyright (C) 2006-2014 Talend Inc. - www.talend.com // Copyright (C) 2006-2014 Talend Inc. - www.talend.com
// //
// This source code is available under agreement available at // This source code is available under agreement available at
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt // %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
// //
// You should have received a copy of the agreement // You should have received a copy of the agreement
// along with this program; if not, write to Talend SA // along with this program; if not, write to Talend SA
// 9 rue Pages 92150 Suresnes, France // 9 rue Pages 92150 Suresnes, France
// //
// ============================================================================ // ============================================================================
package org.talend.designer.hl7.ui.data; package org.talend.designer.hl7.ui.data;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import org.talend.core.model.metadata.IMetadataColumn; import org.talend.core.model.metadata.IMetadataColumn;
import org.talend.core.model.metadata.IMetadataTable; import org.talend.core.model.metadata.IMetadataTable;
/** /**
* DOC hwang class global comment. Detailled comment * DOC hwang class global comment. Detailled comment
*/ */
public abstract class HL7TreeNode { public abstract class HL7TreeNode {
private IMetadataTable table = null; private IMetadataTable table = null;
private IMetadataColumn column = null; private IMetadataColumn column = null;
private String row = null; private String row = null;
private String label; private String label;
private String defaultValue; private String defaultValue;
private List<HL7TreeNode> children = null; private List<HL7TreeNode> children = null;
private HL7TreeNode parent = null; private HL7TreeNode parent = null;
private boolean isRepetableNode = false; private boolean isRepetableNode = false;
private boolean isGroupNode = false; private boolean isGroupNode = false;
private boolean isMainNode = false; private boolean isMainNode = false;
private int order; private int order;
private boolean isAttribute = false; private boolean isAttribute = false;
private boolean isNameSpace = false; private boolean isNameSpace = false;
private String columnName = null; private String columnName = null;
public boolean hasLink() { public boolean hasLink() {
return column != null; return column != null;
} }
/** /**
* HL7TreeNode constructor comment. * HL7TreeNode constructor comment.
*/ */
public HL7TreeNode() { public HL7TreeNode() {
children = new ArrayList<HL7TreeNode>(); children = new ArrayList<HL7TreeNode>();
} }
/** /**
* HL7TreeNode constructor comment. * HL7TreeNode constructor comment.
*/ */
public HL7TreeNode(String label) { public HL7TreeNode(String label) {
children = new ArrayList<HL7TreeNode>(); children = new ArrayList<HL7TreeNode>();
this.label = label; this.label = label;
} }
/** /**
* HL7TreeNode constructor comment. * HL7TreeNode constructor comment.
*/ */
public HL7TreeNode(String label, String defaultValue) { public HL7TreeNode(String label, String defaultValue) {
children = new ArrayList<HL7TreeNode>(); children = new ArrayList<HL7TreeNode>();
this.label = label; this.label = label;
this.defaultValue = defaultValue; this.defaultValue = defaultValue;
} }
/** /**
* Getter for children. * Getter for children.
* *
* @return the children * @return the children
*/ */
public List<HL7TreeNode> getChildren() { public List<HL7TreeNode> getChildren() {
return this.children; return this.children;
} }
/** /**
* Getter for parent. * Getter for parent.
* *
* @return the parent * @return the parent
*/ */
public HL7TreeNode getParent() { public HL7TreeNode getParent() {
return this.parent; return this.parent;
} }
/** /**
* Sets the parent. * Sets the parent.
* *
* @param parent the parent to set * @param parent the parent to set
*/ */
public void setParent(HL7TreeNode parent) { public void setParent(HL7TreeNode parent) {
this.parent = parent; this.parent = parent;
} }
/** /**
* DOC ke Comment method "getColumnLabel". * DOC ke Comment method "getColumnLabel".
* *
* @return * @return
*/ */
public String getColumnLabel() { public String getColumnLabel() {
if (column != null) { if (column != null) {
if (getRow() != null) { if (getRow() != null) {
return getRow() + ":" + this.column.getLabel(); //$NON-NLS-1$ return getRow() + ":" + this.column.getLabel(); //$NON-NLS-1$
} }
return this.column.getLabel(); return this.column.getLabel();
} else if (columnName != null) { } else if (columnName != null) {
if (getRow() != null) { if (getRow() != null) {
return getRow() + ":" + this.getColumnName(); return getRow() + ":" + this.getColumnName();
} }
return this.getColumnName(); return this.getColumnName();
} else { } else {
if (getRow() != null) { if (getRow() != null) {
return getRow(); return getRow();
} }
return ""; //$NON-NLS-1$ return ""; //$NON-NLS-1$
} }
// if (column == null) { // if (column == null) {
// if (getRow() != null) { // if (getRow() != null) {
// return getRow(); // return getRow();
// } // }
// return ""; //$NON-NLS-1$ // return ""; //$NON-NLS-1$
// } else { // } else {
// if (getRow() != null) { // if (getRow() != null) {
// return getRow() + ":" + this.column.getLabel(); //$NON-NLS-1$ // return getRow() + ":" + this.column.getLabel(); //$NON-NLS-1$
// } // }
// return this.column.getLabel(); // return this.column.getLabel();
// } // }
} }
/** /**
* Getter for schema. * Getter for schema.
* *
* @return the schema * @return the schema
*/ */
public IMetadataColumn getColumn() { public IMetadataColumn getColumn() {
return column; return column;
} }
/** /**
* Sets the schema. * Sets the schema.
* *
* @param schema the schema to set * @param schema the schema to set
*/ */
public void setColumn(IMetadataColumn column) { public void setColumn(IMetadataColumn column) {
this.column = column; this.column = column;
} }
/** /**
* Getter for value. * Getter for value.
* *
* @return the value * @return the value
*/ */
public String getLabel() { public String getLabel() {
return this.label; return this.label;
} }
/** /**
* Getter for value. * Getter for value.
* *
* @return the value * @return the value
*/ */
public String getLabelForViewer() { public String getLabelForViewer() {
return this.label; return this.label;
} }
/** /**
* Getter for defaultValue. * Getter for defaultValue.
* *
* @return the value * @return the value
*/ */
public String getDefaultValue() { public String getDefaultValue() {
return this.defaultValue; return this.defaultValue;
} }
/** /**
* Sets the defaultValue. * Sets the defaultValue.
* *
* @param value the defaultValue to set * @param value the defaultValue to set
*/ */
public void setDefaultValue(String defaultValue) { public void setDefaultValue(String defaultValue) {
this.defaultValue = defaultValue; this.defaultValue = defaultValue;
} }
/** /**
* Sets the value. * Sets the value.
* *
* @param value the value to set * @param value the value to set
*/ */
public void setLabel(String label) { public void setLabel(String label) {
this.label = label; this.label = label;
} }
/** /**
* DOC ke Comment method "addChild". * DOC ke Comment method "addChild".
* *
* @param child * @param child
*/ */
public void addChild(HL7TreeNode child) { public void addChild(HL7TreeNode child) {
children.add(child); children.add(child);
child.setParent(this); child.setParent(this);
} }
/** /**
* *
* hwang Comment method "addChild". * hwang Comment method "addChild".
* *
* @param index * @param index
* @param child * @param child
*/ */
public void addChild(int index, HL7TreeNode child) { public void addChild(int index, HL7TreeNode child) {
if (index < children.size()) { if (index < children.size()) {
children.add(index, child); children.add(index, child);
} else { } else {
children.add(child); children.add(child);
} }
child.setParent(this); child.setParent(this);
} }
/** /**
* DOC ke Comment method "removeChild". * DOC ke Comment method "removeChild".
* *
* @param child * @param child
*/ */
public void removeChild(HL7TreeNode child) { public void removeChild(HL7TreeNode child) {
children.remove(child); children.remove(child);
child.setParent(null); child.setParent(null);
} }
/** /**
* DOC ke Comment method "hasChildren". * DOC ke Comment method "hasChildren".
* *
* @return * @return
*/ */
public boolean hasChildren() { public boolean hasChildren() {
return children.size() > 0; return children.size() > 0;
} }
public boolean isRepetable() { public boolean isRepetable() {
return this.isRepetableNode; return this.isRepetableNode;
} }
public void setRepetable(boolean b) { public void setRepetable(boolean b) {
this.isRepetableNode = b; this.isRepetableNode = b;
} }
/** /**
* DOC ke Comment method "isGroup". * DOC ke Comment method "isGroup".
* *
* @return * @return
*/ */
public boolean isGroup() { public boolean isGroup() {
return this.isGroupNode; return this.isGroupNode;
} }
/** /**
* DOC ke Comment method "setGroup". * DOC ke Comment method "setGroup".
* *
* @param b * @param b
*/ */
public void setGroup(boolean b) { public void setGroup(boolean b) {
this.isGroupNode = b; this.isGroupNode = b;
} }
/** /**
* Getter for isMainNode. * Getter for isMainNode.
* *
* @return the isMainNode * @return the isMainNode
*/ */
public boolean isMain() { public boolean isMain() {
return this.isMainNode; return this.isMainNode;
} }
/** /**
* Sets the isMainNode. * Sets the isMainNode.
* *
* @param isMainNode the isMainNode to set * @param isMainNode the isMainNode to set
*/ */
public void setMain(boolean isMainNode) { public void setMain(boolean isMainNode) {
this.isMainNode = isMainNode; this.isMainNode = isMainNode;
} }
/** /**
* *
* hwang Comment method "getTable". * hwang Comment method "getTable".
* *
* @return * @return
*/ */
public IMetadataTable getTable() { public IMetadataTable getTable() {
return this.table; return this.table;
} }
/** /**
* *
* hwang Comment method "setTable". * hwang Comment method "setTable".
* *
* @param table * @param table
*/ */
public void setTable(IMetadataTable table) { public void setTable(IMetadataTable table) {
this.table = table; this.table = table;
} }
/** /**
* *
* hwang Comment method "getRow". * hwang Comment method "getRow".
* *
* @return * @return
*/ */
public String getRow() { public String getRow() {
return this.row; return this.row;
} }
/** /**
* *
* hwang Comment method "setRow". * hwang Comment method "setRow".
* *
* @param row * @param row
*/ */
public void setRow(String row) { public void setRow(String row) {
this.row = row; this.row = row;
} }
/** /**
* hwang Comment method "getOrder". * hwang Comment method "getOrder".
* *
* @return * @return
*/ */
public int getOrder() { public int getOrder() {
return this.order; return this.order;
} }
/** /**
* hwang Comment method "setOrder". * hwang Comment method "setOrder".
* *
* @param order * @param order
*/ */
public void setOrder(int order) { public void setOrder(int order) {
this.order = order; this.order = order;
} }
public boolean isAttribute() { public boolean isAttribute() {
return this.isAttribute; return this.isAttribute;
} }
public void setAttribute(boolean isAttribute) { public void setAttribute(boolean isAttribute) {
this.isAttribute = isAttribute; this.isAttribute = isAttribute;
} }
public boolean isNameSpace() { public boolean isNameSpace() {
return this.isNameSpace; return this.isNameSpace;
} }
public void setNameSpace(boolean isNameSpace) { public void setNameSpace(boolean isNameSpace) {
this.isNameSpace = isNameSpace; this.isNameSpace = isNameSpace;
} }
/** /**
* Getter for columnName. * Getter for columnName.
* *
* @return the columnName * @return the columnName
*/ */
public String getColumnName() { public String getColumnName() {
return this.columnName; return this.columnName;
} }
/** /**
* Sets the columnName. * Sets the columnName.
* *
* @param columnName the columnName to set * @param columnName the columnName to set
*/ */
public void setColumnName(String columnName) { public void setColumnName(String columnName) {
this.columnName = columnName; this.columnName = columnName;
} }
} }

View File

@@ -18,7 +18,7 @@ public class XmlMapExpressionManager {
private final static String EXPRESSION_PATTERN = "(\\[)\\s*(\\w+)\\s*\\.(\\w+\\s*:\\s*(/.+?)+(/@.+?)*)\\s*(\\])|((?!\\[)\\s*\\w+)\\s*\\.\\s*(\\w+(?!\\]))"; private final static String EXPRESSION_PATTERN = "(\\[)\\s*(\\w+)\\s*\\.(\\w+\\s*:\\s*(/.+?)+(/@.+?)*)\\s*(\\])|((?!\\[)\\s*\\w+)\\s*\\.\\s*(\\w+(?!\\]))";
private final String SUBS_PATTERN_FOR_REPLACE_LOCATION = "{0}(\\s*){1}(\\s*)\\.(\\s*){2}(\\s*){3}"; private final String SUBS_PATTERN_FOR_REPLACE_LOCATION = "{0}(\\s*\\b){1}(\\s*)\\.(\\s*){2}(\\b\\s*){3}";
private Perl5Matcher matcher = new Perl5Matcher(); private Perl5Matcher matcher = new Perl5Matcher();

View File

@@ -2,6 +2,5 @@
<classpath> <classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/> <classpathentry kind="output" path="bin"/>
</classpath> </classpath>

View File

@@ -2,6 +2,5 @@
<classpath> <classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/> <classpathentry kind="output" path="bin"/>
</classpath> </classpath>

View File

@@ -2,6 +2,5 @@
<classpath> <classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/> <classpathentry kind="output" path="bin"/>
</classpath> </classpath>

View File

@@ -2,6 +2,5 @@
<classpath> <classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/> <classpathentry kind="output" path="bin"/>
</classpath> </classpath>

View File

@@ -2,6 +2,5 @@
<classpath> <classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/> <classpathentry kind="output" path="bin"/>
</classpath> </classpath>

View File

@@ -3,6 +3,5 @@
<classpathentry exported="true" kind="lib" path="lib/commons-net-3.3.jar"/> <classpathentry exported="true" kind="lib" path="lib/commons-net-3.3.jar"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/> <classpathentry kind="output" path="bin"/>
</classpath> </classpath>

View File

@@ -2,6 +2,5 @@
<classpath> <classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/> <classpathentry kind="output" path="bin"/>
</classpath> </classpath>

View File

@@ -2,7 +2,6 @@
<classpath> <classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry exported="true" kind="lib" path="lib/hapi-base-1.0.1.jar"/> <classpathentry exported="true" kind="lib" path="lib/hapi-base-1.0.1.jar"/>
<classpathentry exported="true" kind="lib" path="lib/hapi-structures-v21-1.0.1.jar"/> <classpathentry exported="true" kind="lib" path="lib/hapi-structures-v21-1.0.1.jar"/>
<classpathentry exported="true" kind="lib" path="lib/hapi-structures-v22-1.0.1.jar"/> <classpathentry exported="true" kind="lib" path="lib/hapi-structures-v22-1.0.1.jar"/>

View File

@@ -2,6 +2,5 @@
<classpath> <classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/> <classpathentry kind="output" path="bin"/>
</classpath> </classpath>

View File

@@ -3,6 +3,5 @@
<classpathentry exported="true" kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> <classpathentry exported="true" kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry exported="true" kind="con" path="org.eclipse.pde.core.requiredPlugins"/> <classpathentry exported="true" kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry exported="true" kind="lib" path="lib/jboss-serialization.jar"/> <classpathentry exported="true" kind="lib" path="lib/jboss-serialization.jar"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/> <classpathentry kind="output" path="bin"/>
</classpath> </classpath>

View File

@@ -2,6 +2,5 @@
<classpath> <classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/> <classpathentry kind="output" path="bin"/>
</classpath> </classpath>

View File

@@ -2,6 +2,5 @@
<classpath> <classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/> <classpathentry kind="output" path="bin"/>
</classpath> </classpath>

View File

@@ -2,6 +2,5 @@
<classpath> <classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/> <classpathentry kind="output" path="bin"/>
</classpath> </classpath>

View File

@@ -2,6 +2,5 @@
<classpath> <classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/> <classpathentry kind="output" path="bin"/>
</classpath> </classpath>

View File

@@ -2,6 +2,5 @@
<classpath> <classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/> <classpathentry kind="output" path="bin"/>
</classpath> </classpath>

View File

@@ -2,6 +2,5 @@
<classpath> <classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/> <classpathentry kind="output" path="bin"/>
</classpath> </classpath>

View File

@@ -2,6 +2,5 @@
<classpath> <classpath>
<classpathentry exported="true" kind="lib" path="lib/sac-1.3.jar"/> <classpathentry exported="true" kind="lib" path="lib/sac-1.3.jar"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/> <classpathentry kind="output" path="bin"/>
</classpath> </classpath>

View File

@@ -2,6 +2,5 @@
<classpath> <classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/> <classpathentry kind="output" path="bin"/>
</classpath> </classpath>

View File

@@ -415,7 +415,16 @@ public class ImportItemUtil {
return 0; return 0;
} else if (!(o1.getProperty().getItem() instanceof RoutineItem) } else if (!(o1.getProperty().getItem() instanceof RoutineItem)
&& !(o2.getProperty().getItem() instanceof RoutineItem)) { && !(o2.getProperty().getItem() instanceof RoutineItem)) {
return 0; // TUP-2548 sort items by label
String label = o1.getLabel();
if (label == null) {
return -1;
}
final String label2 = o2.getLabel();
if (label2 == null) {
return 1;
}
return label.compareTo(label2);
} else if (o1.getProperty().getItem() instanceof RoutineItem) { } else if (o1.getProperty().getItem() instanceof RoutineItem) {
return -1; return -1;
} else { } else {

View File

@@ -25,6 +25,7 @@ import java.util.Map;
import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.IWorkspace; import org.eclipse.core.resources.IWorkspace;
import org.eclipse.core.resources.IWorkspaceRunnable;
import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.FileLocator; import org.eclipse.core.runtime.FileLocator;
@@ -32,6 +33,7 @@ import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Path; import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Platform; import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.jobs.ISchedulingRule;
import org.eclipse.jface.dialogs.ProgressMonitorDialog; import org.eclipse.jface.dialogs.ProgressMonitorDialog;
import org.eclipse.jface.layout.GridDataFactory; import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.jface.operation.IRunnableWithProgress; import org.eclipse.jface.operation.IRunnableWithProgress;
@@ -71,6 +73,7 @@ import org.talend.core.model.properties.PropertiesFactory;
import org.talend.core.model.repository.ERepositoryObjectType; import org.talend.core.model.repository.ERepositoryObjectType;
import org.talend.core.repository.model.ProxyRepositoryFactory; import org.talend.core.repository.model.ProxyRepositoryFactory;
import org.talend.core.ui.ISVNProviderService; import org.talend.core.ui.ISVNProviderService;
import org.talend.repository.RepositoryWorkUnit;
import org.talend.repository.model.ComponentsFactoryProvider; import org.talend.repository.model.ComponentsFactoryProvider;
import org.talend.repository.model.IProxyRepositoryFactory; import org.talend.repository.model.IProxyRepositoryFactory;
@@ -142,6 +145,7 @@ public class CustomComponentSettingPage extends ProjectSettingPage {
componentViewer.addSelectionChangedListener(new ISelectionChangedListener() { componentViewer.addSelectionChangedListener(new ISelectionChangedListener() {
@Override
public void selectionChanged(SelectionChangedEvent event) { public void selectionChanged(SelectionChangedEvent event) {
shareButton.setEnabled(!event.getSelection().isEmpty()); shareButton.setEnabled(!event.getSelection().isEmpty());
} }
@@ -158,6 +162,7 @@ public class CustomComponentSettingPage extends ProjectSettingPage {
shareViewer.addSelectionChangedListener(new ISelectionChangedListener() { shareViewer.addSelectionChangedListener(new ISelectionChangedListener() {
@Override
public void selectionChanged(SelectionChangedEvent event) { public void selectionChanged(SelectionChangedEvent event) {
backButton.setEnabled(!event.getSelection().isEmpty()); backButton.setEnabled(!event.getSelection().isEmpty());
} }
@@ -340,6 +345,7 @@ public class CustomComponentSettingPage extends ProjectSettingPage {
protected void performApply() { protected void performApply() {
final IRunnableWithProgress runnable = new IRunnableWithProgress() { final IRunnableWithProgress runnable = new IRunnableWithProgress() {
@Override
public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException { public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
monitor.beginTask("Save custom component setting", (sharedAdded.size() + backAdded.size()) * 100); monitor.beginTask("Save custom component setting", (sharedAdded.size() + backAdded.size()) * 100);
finish(monitor); finish(monitor);
@@ -369,97 +375,138 @@ public class CustomComponentSettingPage extends ProjectSettingPage {
} }
@Override @Override
public boolean performCancel() { public boolean performCancel() {
if (componentViewer != null) { if (componentViewer != null) {
resetCustomComponentSetting(); resetCustomComponentSetting();
} }
return super.performCancel(); return super.performCancel();
} }
private void finish(IProgressMonitor... monitorWrap) { private void finish(IProgressMonitor... monitorWrap) {
IProgressMonitor monitor = null; IProgressMonitor monitor = null;
if (monitorWrap != null && monitorWrap.length == 1) { if (monitorWrap != null && monitorWrap.length == 1) {
monitor = monitorWrap[0]; monitor = monitorWrap[0];
} }
IProxyRepositoryFactory prf = CorePlugin.getDefault().getProxyRepositoryFactory(); final IProxyRepositoryFactory prf = CorePlugin.getDefault().getProxyRepositoryFactory();
if (PluginChecker.isSVNProviderPluginLoaded() && (!sharedAdded.isEmpty() || !backAdded.isEmpty())) { if (PluginChecker.isSVNProviderPluginLoaded() && (!sharedAdded.isEmpty() || !backAdded.isEmpty())) {
ISVNProviderService service = (ISVNProviderService) GlobalServiceRegister.getDefault().getService( RepositoryWorkUnit repositoryWorkUnit = new RepositoryWorkUnit("Commit new component") {
ISVNProviderService.class);
String projectLabel = pro.getTechnicalLabel();
IWorkspace workspace = ResourcesPlugin.getWorkspace();
IProject eclipseProject = workspace.getRoot().getProject(projectLabel);
String targetRoot = new Path(Platform.getInstanceLocation().getURL().getPath()).toFile().getPath() @Override
+ File.separatorChar + projectLabel + File.separatorChar public void run() throws PersistenceException {
+ ERepositoryObjectType.getFolderName(ERepositoryObjectType.COMPONENTS); final IWorkspaceRunnable op = new IWorkspaceRunnable() {
File componentFolder = new File(targetRoot);
URL url = null;
try {
if (!componentFolder.exists()) {
FilesUtils.createFoldersIfNotExists(targetRoot, false);
}
Bundle b = Platform.getBundle(IComponentsFactory.COMPONENTS_LOCATION);
url = FileLocator.toFileURL(FileLocator.find(b, new Path(""), null));
String sourceRoot = url.getFile(); @Override
public void run(IProgressMonitor subMonitor) throws CoreException {
// delete share ISVNProviderService service = (ISVNProviderService) GlobalServiceRegister.getDefault().getService(
for (IComponent component : backAdded.keySet()) { ISVNProviderService.class);
service.svnEclipseHandlerDelete(eclipseProject, pro, targetRoot + File.separator + component.getName()); String projectLabel = pro.getTechnicalLabel();
if (monitor != null) { IWorkspace workspace = ResourcesPlugin.getWorkspace();
monitor.worked(10); IProject eclipseProject = workspace.getRoot().getProject(projectLabel);
}
}
if (!backAdded.isEmpty()) {
getCustomComponentSettings().removeAll(backAdded.values());
}
FileFilter ff = new FileFilter() { String targetRoot = new Path(Platform.getInstanceLocation().getURL().getPath()).toFile().getPath()
+ File.separatorChar + projectLabel + File.separatorChar
+ ERepositoryObjectType.getFolderName(ERepositoryObjectType.COMPONENTS);
File componentFolder = new File(targetRoot);
URL url = null;
try {
if (!componentFolder.exists()) {
FilesUtils.createFoldersIfNotExists(targetRoot, false);
}
Bundle b = Platform.getBundle(IComponentsFactory.COMPONENTS_LOCATION);
url = FileLocator.toFileURL(FileLocator.find(b, new Path(""), null));
public boolean accept(File pathname) { String sourceRoot = url.getFile();
if (FilesUtils.isSVNFolder(pathname)) {
return false; // delete share
for (IComponent component : backAdded.keySet()) {
service.svnEclipseHandlerDelete(eclipseProject, pro,
targetRoot + File.separator + component.getName());
if (subMonitor != null) {
subMonitor.worked(10);
}
}
if (!backAdded.isEmpty()) {
getCustomComponentSettings().removeAll(backAdded.values());
}
FileFilter ff = new FileFilter() {
@Override
public boolean accept(File pathname) {
if (FilesUtils.isSVNFolder(pathname)) {
return false;
}
return true;
}
};
// share
for (IComponent component : sharedAdded.keySet()) {
String sourcePath = sourceRoot + component.getPathSource() + File.separator
+ component.getName();
File sourceFile = new File(sourcePath);
String targetPath = targetRoot + File.separatorChar + component.getName();
File targetFile = new File(targetPath);
FilesUtils.copyFolder(sourceFile, targetFile, true, ff, null, true, false);
if (subMonitor != null) {
subMonitor.worked(10);
}
}
} catch (Exception e) {
resetCustomComponentSetting();
ExceptionHandler.process(e);
}
try {
prf.saveProject(pro);
} catch (PersistenceException e) {
ExceptionHandler.process(e);
}
try {
eclipseProject.refreshLocal(IResource.DEPTH_INFINITE, subMonitor);
} catch (CoreException e1) {
ExceptionHandler.process(e1);
}
} }
return true; };
} IWorkspace workspace = ResourcesPlugin.getWorkspace();
try {
}; ISchedulingRule schedulingRule = workspace.getRoot();
// the update the project files need to be done in the workspace runnable to avoid all
// share // notification
for (IComponent component : sharedAdded.keySet()) { // of changes before the end of the modifications.
String sourcePath = sourceRoot + component.getPathSource() + File.separator + component.getName(); workspace.run(op, schedulingRule, IWorkspace.AVOID_UPDATE, new NullProgressMonitor());
File sourceFile = new File(sourcePath); } catch (CoreException e) {
throw new PersistenceException(e.getCause());
String targetPath = targetRoot + File.separatorChar + component.getName();
File targetFile = new File(targetPath);
FilesUtils.copyFolder(sourceFile, targetFile, true, ff, null, true, false);
if (monitor != null) {
monitor.worked(10);
} }
} }
};
} catch (Exception e) { repositoryWorkUnit.setRefreshRepository(false);
resetCustomComponentSetting(); repositoryWorkUnit.setForceTransaction(true);
ExceptionHandler.process(e); prf.executeRepositoryWorkUnit(repositoryWorkUnit);
}
try { try {
prf.saveProject(pro); repositoryWorkUnit.throwPersistenceExceptionIfAny();
} catch (PersistenceException e) { } catch (PersistenceException e) {
ExceptionHandler.process(e); e.printStackTrace();
} }
try {
eclipseProject.refreshLocal(IResource.DEPTH_INFINITE, new NullProgressMonitor());
} catch (CoreException e1) {
ExceptionHandler.process(e1);
}
} }
if (monitor != null) { if (monitor != null) {
monitor.done(); monitor.done();
} }
// refresh again after the gui closed .
try {
String projectLabel = pro.getTechnicalLabel();
IWorkspace workspace = ResourcesPlugin.getWorkspace();
IProject eclipseProject = workspace.getRoot().getProject(projectLabel);
eclipseProject.refreshLocal(IResource.DEPTH_INFINITE, new NullProgressMonitor());
} catch (CoreException e1) {
ExceptionHandler.process(e1);
}
} }
private void resetCustomComponentSetting() { private void resetCustomComponentSetting() {
@@ -504,21 +551,25 @@ public class CustomComponentSettingPage extends ProjectSettingPage {
*/ */
class CustomCompSettingContentProvider implements ITreeContentProvider { class CustomCompSettingContentProvider implements ITreeContentProvider {
@Override
public Object[] getChildren(Object parentElement) { public Object[] getChildren(Object parentElement) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
return null; return null;
} }
@Override
public Object getParent(Object element) { public Object getParent(Object element) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
return null; return null;
} }
@Override
public boolean hasChildren(Object element) { public boolean hasChildren(Object element) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
return false; return false;
} }
@Override
public Object[] getElements(Object inputElement) { public Object[] getElements(Object inputElement) {
if (inputElement instanceof List) { if (inputElement instanceof List) {
return ((List) inputElement).toArray(); return ((List) inputElement).toArray();
@@ -526,11 +577,13 @@ public class CustomComponentSettingPage extends ProjectSettingPage {
return null; return null;
} }
@Override
public void dispose() { public void dispose() {
// TODO Auto-generated method stub // TODO Auto-generated method stub
} }
@Override
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
// TODO Auto-generated method stub // TODO Auto-generated method stub