diff --git a/cn.com.origin.autocode/.classpath b/cn.com.origin.autocode/.classpath index 6c0ea46..d46c515 100644 --- a/cn.com.origin.autocode/.classpath +++ b/cn.com.origin.autocode/.classpath @@ -67,7 +67,7 @@ - + @@ -75,6 +75,9 @@ + + + diff --git a/cn.com.origin.autocode/META-INF/MANIFEST.MF b/cn.com.origin.autocode/META-INF/MANIFEST.MF index 922827c..376f0bd 100644 --- a/cn.com.origin.autocode/META-INF/MANIFEST.MF +++ b/cn.com.origin.autocode/META-INF/MANIFEST.MF @@ -58,6 +58,15 @@ Export-Package: ., cn.com.origin.autocode.views.groupview, cn.com.origin.autocode.views.itemtypeview, cn.com.origin.autocode.xmlutil, + com.alibaba.fastjson, + com.alibaba.fastjson.annotation, + com.alibaba.fastjson.asm, + com.alibaba.fastjson.parser, + com.alibaba.fastjson.parser.deserializer, + com.alibaba.fastjson.serializer, + com.alibaba.fastjson.support.jaxrs, + com.alibaba.fastjson.support.spring, + com.alibaba.fastjson.util, com.ctc.wstx.api, com.ctc.wstx.cfg, com.ctc.wstx.compat, @@ -900,4 +909,16 @@ Bundle-ClassPath: json_lib/commons-beanutils-1.7.0.jar, axis2_lib/xalan-2.7.0.jar, axis2_lib/xml-resolver-1.2.jar, axis2_lib/xmlbeans-2.3.0.jar, - axis2_lib/XmlSchema-1.4.7.jar + axis2_lib/XmlSchema-1.4.7.jar, + json_lib/fastjson-1.2.9-javadoc.jar, + json_lib/fastjson-1.2.9-sources.jar, + json_lib/fastjson-1.2.9.jar +Import-Package: com.alibaba.fastjson, + com.alibaba.fastjson.annotation, + com.alibaba.fastjson.asm, + com.alibaba.fastjson.parser, + com.alibaba.fastjson.parser.deserializer, + com.alibaba.fastjson.serializer, + com.alibaba.fastjson.support.jaxrs, + com.alibaba.fastjson.support.spring, + com.alibaba.fastjson.util diff --git a/cn.com.origin.autocode/build.properties b/cn.com.origin.autocode/build.properties index 470d41f..5a51b1b 100644 --- a/cn.com.origin.autocode/build.properties +++ b/cn.com.origin.autocode/build.properties @@ -77,4 +77,7 @@ bin.includes = META-INF/,\ axis2_lib/xalan-2.7.0.jar,\ axis2_lib/xml-resolver-1.2.jar,\ axis2_lib/xmlbeans-2.3.0.jar,\ - axis2_lib/XmlSchema-1.4.7.jar + axis2_lib/XmlSchema-1.4.7.jar,\ + json_lib/fastjson-1.2.9-javadoc.jar,\ + json_lib/fastjson-1.2.9-sources.jar,\ + json_lib/fastjson-1.2.9.jar diff --git a/cn.com.origin.autocode/classes/.gitignore b/cn.com.origin.autocode/classes/.gitignore new file mode 100644 index 0000000..28b1e45 --- /dev/null +++ b/cn.com.origin.autocode/classes/.gitignore @@ -0,0 +1,2 @@ +/cn/ +/icons/ diff --git a/cn.com.origin.autocode/src/cn/com/origin/autocode/jfom/util/HttpUtil.java b/cn.com.origin.autocode/src/cn/com/origin/autocode/jfom/util/HttpUtil.java new file mode 100644 index 0000000..34c877d --- /dev/null +++ b/cn.com.origin.autocode/src/cn/com/origin/autocode/jfom/util/HttpUtil.java @@ -0,0 +1,170 @@ +package cn.com.origin.autocode.jfom.util; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.UnsupportedEncodingException; +import java.util.Iterator; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Set; + +import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler; +import org.apache.commons.httpclient.HttpClient; +import org.apache.commons.httpclient.HttpStatus; +import org.apache.commons.httpclient.NameValuePair; +import org.apache.commons.httpclient.methods.GetMethod; +import org.apache.commons.httpclient.methods.PostMethod; +import org.apache.commons.httpclient.params.HttpMethodParams; + +public class HttpUtil { + + public static String doGet(String url) { + // 输入流 + InputStream is = null; + BufferedReader br = null; + String result = null; + // 创建httpClient实例 + HttpClient httpClient = new HttpClient(); + // 设置http连接主机服务超时时间:15000毫秒 + // 先获取连接管理器对象,再获取参数对象,再进行参数的赋值 + httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(15000); + // 创建一个Get方法实例对象 + GetMethod getMethod = new GetMethod(url); + // 设置get请求超时为60000毫秒 + getMethod.getParams().setParameter(HttpMethodParams.SO_TIMEOUT, 60000); + // 设置请求重试机制,默认重试次数:3次,参数设置为true,重试机制可用,false相反 + getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler(3, true)); + try { + // 执行Get方法 + int statusCode = httpClient.executeMethod(getMethod); + // 判断返回码 + if (statusCode != HttpStatus.SC_OK) { + // 如果状态码返回的不是ok,说明失败了,打印错误信息 + System.err.println("Method faild: " + getMethod.getStatusLine()); + } else { + // 通过getMethod实例,获取远程的一个输入流 + is = getMethod.getResponseBodyAsStream(); + // 包装输入流 + br = new BufferedReader(new InputStreamReader(is, "UTF-8")); + + StringBuffer sbf = new StringBuffer(); + // 读取封装的输入流 + String temp = null; + while ((temp = br.readLine()) != null) { + sbf.append(temp).append("\r\n"); + } + + result = sbf.toString(); + } + + } catch (IOException e) { + e.printStackTrace(); + } finally { + // 关闭资源 + if (null != br) { + try { + br.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if (null != is) { + try { + is.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + // 释放连接 + getMethod.releaseConnection(); + } + return result; + } + + public static String doPost(String url, Map paramMap) { + // 获取输入流 + InputStream is = null; + BufferedReader br = null; + String result = null; + // 创建httpClient实例对象 + HttpClient httpClient = new HttpClient(); + // 设置httpClient连接主机服务器超时时间:15000毫秒 + httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(15000); + // 创建post请求方法实例对象 + PostMethod postMethod = new PostMethod(url); + // 设置post请求超时时间 + postMethod.getParams().setParameter(HttpMethodParams.SO_TIMEOUT, 60000); + + NameValuePair[] nvp = null; + // 判断参数map集合paramMap是否为空 + if (null != paramMap && paramMap.size() > 0) {// 不为空 + // 创建键值参数对象数组,大小为参数的个数 + nvp = new NameValuePair[paramMap.size()]; + // 循环遍历参数集合map + Set> entrySet = paramMap.entrySet(); + // 获取迭代器 + Iterator> iterator = entrySet.iterator(); + + int index = 0; + while (iterator.hasNext()) { + Entry mapEntry = iterator.next(); + // 从mapEntry中获取key和value创建键值对象存放到数组中 + try { + nvp[index] = new NameValuePair(mapEntry.getKey(), + new String(mapEntry.getValue().toString().getBytes("UTF-8"), "UTF-8")); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + index++; + } + } + // 判断nvp数组是否为空 + if (null != nvp && nvp.length > 0) { + // 将参数存放到requestBody对象中 + postMethod.setRequestBody(nvp); + } + // 执行POST方法 + try { + int statusCode = httpClient.executeMethod(postMethod); + // 判断是否成功 + if (statusCode != HttpStatus.SC_OK) { + System.err.println("Method faild: " + postMethod.getStatusLine()); + } + // 获取远程返回的数据 + is = postMethod.getResponseBodyAsStream(); + // 封装输入流 + br = new BufferedReader(new InputStreamReader(is, "UTF-8")); + + StringBuffer sbf = new StringBuffer(); + String temp = null; + while ((temp = br.readLine()) != null) { + sbf.append(temp).append("\r\n"); + } + + result = sbf.toString(); + } catch (IOException e) { + e.printStackTrace(); + } finally { + // 关闭资源 + if (null != br) { + try { + br.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if (null != is) { + try { + is.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + // 释放连接 + postMethod.releaseConnection(); + } + return result; + } +} \ No newline at end of file diff --git a/cn.com.origin.autocode/src/cn/com/origin/autocode/newitem/generatcode/ClassificationBean.java b/cn.com.origin.autocode/src/cn/com/origin/autocode/newitem/generatcode/ClassificationBean.java new file mode 100644 index 0000000..253f4f3 --- /dev/null +++ b/cn.com.origin.autocode/src/cn/com/origin/autocode/newitem/generatcode/ClassificationBean.java @@ -0,0 +1,27 @@ +package cn.com.origin.autocode.newitem.generatcode; + +public class ClassificationBean { + int[] ids; + String[] values; + + ClassificationBean(int[] ids, String[] values) { + this.ids = ids; + this.values = values; + } + + public int[] getIds() { + return ids; + } + + public void setIds(int[] ids) { + this.ids = ids; + } + + public String[] getValues() { + return values; + } + + public void setValues(String[] values) { + this.values = values; + } +} diff --git a/cn.com.origin.autocode/src/cn/com/origin/autocode/newitem/generatcode/NewCodeItemDialog.java b/cn.com.origin.autocode/src/cn/com/origin/autocode/newitem/generatcode/NewCodeItemDialog.java index acde571..b3a2142 100644 --- a/cn.com.origin.autocode/src/cn/com/origin/autocode/newitem/generatcode/NewCodeItemDialog.java +++ b/cn.com.origin.autocode/src/cn/com/origin/autocode/newitem/generatcode/NewCodeItemDialog.java @@ -11,6 +11,7 @@ import java.awt.Toolkit; import java.awt.datatransfer.StringSelection; import java.io.IOException; import java.math.BigInteger; +import java.net.URLEncoder; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; @@ -24,6 +25,7 @@ import java.util.Map; import javax.swing.JDialog; import javax.xml.bind.JAXBException; +import org.apache.james.mime4j.codec.EncoderUtil; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.viewers.TreeViewer; @@ -101,6 +103,7 @@ import com.teamcenter.services.rac.core._2008_06.DataManagement.CreateInput; import com.teamcenter.soa.client.model.LovValue; import cn.com.origin.autocode.jfom.util.ClassProperty; +import cn.com.origin.autocode.jfom.util.HttpUtil; import cn.com.origin.autocode.jfom.util.JFomBZJBean; import cn.com.origin.autocode.jfom.util.JFomBean; import cn.com.origin.autocode.jfom.util.JFomLovBean; @@ -132,6 +135,7 @@ import cn.com.origin.autocodemanager.common.tree.AbstractTreeData; import cn.com.origin.autocodemanager.common.tree.TreeViewOperation; import cn.com.origin.autocodemanager.views.listcodeview.NewItemListCodeView; import cn.com.origin.autocodemanager.views.treecodeview.NewItemTreeCodeView; +import net.sf.json.JSONObject; public class NewCodeItemDialog extends Dialog { private Table propTable; @@ -4059,8 +4063,9 @@ public class NewCodeItemDialog extends Dialog { if (newComp != null) { afterCreate(); + sendToClassification(); // sendObjToClassfication((TCComponentItem) newComp); - sendObjToClassficationByWebService((TCComponentItem) newComp); +// sendObjToClassficationByWebService((TCComponentItem) newComp); newComp.refresh(); new GetCodeNumber().delete_recycleID(counterID); setClipboard(newID); @@ -4332,4 +4337,64 @@ public class NewCodeItemDialog extends Dialog { } return true; } + + public boolean sendToClassification() { + TCComponentItem item = (TCComponentItem) newComp; + try { + String uid = item.getLatestItemRevision().getUid(); + String cid = codeRemark.trim(); + List idsList = new ArrayList(); + List valuesList = new ArrayList(); + for (int i = 0; i < classPropList.size(); i++) { + // System.out.println(" CLASS ID = " + integers[i] + " =" + + // vals[i]); + CNClassPropBean bean = classPropList.get(i); + String value = ""; + if (bean.isLov) { + value = ((Combo) classTextList.get(i)).getText(); + value = bean.lovMapping.get(value); + } else { + value = ((Text) classTextList.get(i)).getText(); + } + // icspro[i] = new ICSProperty(bean.propID, value); + if (!"".equals(value)) { + idsList.add(bean.propID); + valuesList.add(value); + } + + } + int[] ids = new int[idsList.size()]; + String[] values = valuesList.toArray(new String[valuesList.size()]); + for (int i = 0; i < idsList.size(); i++) { + ids[i] = idsList.get(i); + } + + ClassificationBean cfb = new ClassificationBean(ids, values); + System.out.println(Arrays.toString(ids)); + System.out.println(Arrays.toString(values)); + System.out.println(cfb.getIds()[0]); + JSONObject obj = new JSONObject(); + obj.put("ids", ids); + obj.put("values", values); + String url = EncoderUtil.encodeAddressDisplayName(obj.toString()); + url = url.substring(1, url.length() - 1); + url = URLEncoder.encode(url); + url = "http://localhost:8080/classification?uid=" + uid + "&cid=" + cid + "&prop=" + url; + System.out.println(url); + final String URL = url; + + new Thread(new Runnable() { + @Override + public void run() { + // TODO Auto-generated method stub + HttpUtil.doGet(URL); + System.out.println("success"); + } + }).start(); + } catch (TCException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return true; + } } diff --git a/cn.com.origin.autocode/src/cn/com/origin/autocode/newitem/generatcode/Test.java b/cn.com.origin.autocode/src/cn/com/origin/autocode/newitem/generatcode/Test.java index c249281..ea33b89 100644 --- a/cn.com.origin.autocode/src/cn/com/origin/autocode/newitem/generatcode/Test.java +++ b/cn.com.origin.autocode/src/cn/com/origin/autocode/newitem/generatcode/Test.java @@ -1,5 +1,14 @@ package cn.com.origin.autocode.newitem.generatcode; +import java.net.URLDecoder; +import java.net.URLEncoder; + +import org.apache.james.mime4j.codec.EncoderUtil; + +import com.alibaba.fastjson.JSON; + +import net.sf.json.JSONObject; + public class Test { /** @@ -7,12 +16,46 @@ public class Test { */ public static void main(String[] args) { // TODO Auto-generated method stub - String s1 = "000"; - System.out.println(Float.parseFloat(s1)); - String str = "true:"; - if (str.length() > 4) { - System.out.println(str.substring(4 + 1, str.length())); + int[] ids = new int[] { 1006 }; + String[] values = new String[] { "ZF01" }; + ClassficationBean cfb = new ClassficationBean(ids, values); +// String str = com.alibaba.fastjson.JSONObject.toJSONString(cfb); + JSONObject obj = new JSONObject(); + obj.put("ids", ids); + obj.put("values", values); + String url = EncoderUtil.encodeAddressDisplayName(JSON.toJSONString(cfb)); + url = url.substring(1, url.length() - 1); + url = URLEncoder.encode(url); + url = "http://localhost:8080/classification?prop=" + url; + System.out.println(url); + System.out.println(URLDecoder.decode(url)); + } + + static class ClassficationBean { + int[] ids; + String[] values; + + ClassficationBean(int[] ids, String[] values) { + this.ids = ids; + this.values = values; + } + + public int[] getIds() { + return ids; + } + + public void setIds(int[] ids) { + this.ids = ids; + } + + public String[] getValues() { + return values; + } + + public void setValues(String[] values) { + this.values = values; } + } } diff --git a/cn.com.origin.autocodemanager/classes/.gitignore b/cn.com.origin.autocodemanager/classes/.gitignore new file mode 100644 index 0000000..28b1e45 --- /dev/null +++ b/cn.com.origin.autocodemanager/classes/.gitignore @@ -0,0 +1,2 @@ +/cn/ +/icons/ diff --git a/cn.com.origin.autocodemanager/src/cn/com/origin/autocodemanager/handlers/ExportNodeHandler.java b/cn.com.origin.autocodemanager/src/cn/com/origin/autocodemanager/handlers/ExportNodeHandler.java index 527d9b6..ac7492c 100644 --- a/cn.com.origin.autocodemanager/src/cn/com/origin/autocodemanager/handlers/ExportNodeHandler.java +++ b/cn.com.origin.autocodemanager/src/cn/com/origin/autocodemanager/handlers/ExportNodeHandler.java @@ -12,18 +12,20 @@ import org.eclipse.core.expressions.IEvaluationContext; import org.eclipse.swt.widgets.DirectoryDialog; import org.eclipse.swt.widgets.Display; import org.eclipse.ui.ISources; -import cn.com.origin.autocodemanager.common.AbstractTreeViewPart; -import cn.com.origin.autocodemanager.common.tree.AbstractCreateTreeView; -import cn.com.origin.autocodemanager.common.tree.AbstractTreeData; -import cn.com.origin.autocodemanager.common.tree.TreeViewOperation; -import cn.com.origin.autocodemanager.export.ExportNodeOperation; import com.teamcenter.rac.aif.AbstractAIFUIApplication; import com.teamcenter.rac.aifrcp.AIFUtility; import com.teamcenter.rac.kernel.TCSession; import com.teamcenter.rac.util.MessageBox; +import cn.com.origin.autocodemanager.common.AbstractTreeViewPart; +import cn.com.origin.autocodemanager.common.tree.AbstractCreateTreeView; +import cn.com.origin.autocodemanager.common.tree.AbstractTreeData; +import cn.com.origin.autocodemanager.common.tree.TreeViewOperation; +import cn.com.origin.autocodemanager.export.ExportNodeOperation; + public class ExportNodeHandler extends AbstractHandler { + @Override public Object execute(ExecutionEvent e) throws ExecutionException { AbstractAIFUIApplication abstractAIFUIApplication = AIFUtility.getCurrentApplication(); TCSession session = (TCSession) abstractAIFUIApplication.getSession(); @@ -38,8 +40,8 @@ public class ExportNodeHandler extends AbstractHandler { // TreeViewOperation treeViewOperation=new TreeViewOperation(); DirectoryDialog directoryDialog = new DirectoryDialog(Display.getDefault().getActiveShell()); directoryDialog.setText("导出"); - directoryDialog.open(); - String filePath = directoryDialog.getFilterPath(); + + String filePath = directoryDialog.open(); System.out.println("所选择的物理文件路径是:" + filePath); if (filePath != null && !"".equals(filePath)) { filePath = filePath + "\\" + selectedNode.getPackCodeNodeInfo().getNode_name() + ".xls";