package com.vci.server.omd.common; import java.util.ArrayList; import java.util.List; import org.dom4j.Element; import com.vci.corba.common.VCIError; import com.vci.corba.omd.vrm.VersionRule; import com.vci.corba.omd.vrm.VersionRuleService; import com.vci.server.cache.OMCacheProvider; import com.vci.server.omd.versionrule.VersionRuleServiceImpl; public class VersionRuleHelper { private static VersionRuleService versionRuleService = null; private static VersionRuleHelper instance = null; // public static DateFormat tsDF = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); // public static DateFormat timeDF = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // public static final String OID = "oid"; // public static final String NAME = "name"; // public static final String LABEL = "label"; // public static final String DESCRIPTION = "description"; // public static final String TS = "ts"; // public static final String CREATOR = "creator"; // public static final String CREATETIME = "createTime"; // public static final String MODIFIER = "modifier"; // public static final String MODIFYTIME = "modifyTime"; /** * 缓存已经调用new VersionRuleProvider(); * 因此不能定义 私有的VersionRuleProvider(); * @return */ public static VersionRuleHelper getInstance(){ if(instance == null){ instance = new VersionRuleHelper(); } return instance; } /*** * * 获取所有链接类型对象数组 * */ public VersionRule [] getVersionRules(){ return OMCacheProvider.getVersionRules(); // VersionRule[] versionRules = null; // try { // versionRules = getService().getVersionRules(null); // } catch (VCIError e) { // // TODO Auto-generated catch block // e.printStackTrace(); // } // return versionRules; } public VersionRule getVersionRuleByName(String name){ return OMCacheProvider.getVersionRule(name); // try { // VersionRule[] vrs = getService().getVersionRules(null); // for(VersionRule vr : vrs){ // if (vr.name.equals(name)) // return vr; // } // } catch (VCIError e) { // // TODO Auto-generated catch block // e.printStackTrace(); // } // return null; } // public VersionRuleService getService(){ // try { // versionRuleService = new VersionRuleServiceImpl(); // } catch (Exception e) { // e.printStackTrace(); // } // return versionRuleService; // } public List parseArrayToList(String[] array){ List list = new ArrayList(array.length); for(String a : array){ list.add(a); } return list; } // // public boolean expData(String dir, VersionRule[] vrs){ // //TODO调用ATT, LC, VR的导出 // BufferedWriter bw = null; // FileOutputStream fos = null; // OutputStreamWriter osw =null; // try{ // File file = new File(dir + "/vr.txt"); // //将clob字段写到单独的文件中 // new File(dir + "/vr").mkdir(); // //add by caill start 2015.12.23 导出时将txt文件设置为“utf-8”格式 // fos = new FileOutputStream(file); // osw = new OutputStreamWriter(fos, "utf-8"); // bw = new BufferedWriter(osw); // //add by caill end // /*w = new FileWriter(file); // bw = new BufferedWriter(w);*/ // for(VersionRule vr : vrs){ // //若str小于缓冲区大小, 将写到缓冲区; // //若str大于缓冲区大小, 将刷新缓冲区(将缓冲区内容写到底层流), 然后str直接写到底层流. // String text = getObjectText(vr); // bw.write(text); // bw.newLine(); // BufferedWriter clobBW = null; // FileOutputStream fo = null; // OutputStreamWriter pw =null; // try{ // File clobFile = new File(dir + "/vr/" + vr.oid + ".xml"); // //add by caill start 2015.12.23 将xml内容和xml文件格式统一 // fo = new FileOutputStream(clobFile); // pw = new OutputStreamWriter(fo, "utf-8"); // clobBW = new BufferedWriter(pw); // clobBW.write( ""); // clobBW.write(getXmlText(vr)); // clobBW.flush(); // //add by caill end // /*clobW = new FileWriter(clobFile); // clobBW = new BufferedWriter(clobW); // clobBW.write( "");//gb2312 // clobBW.write(getXmlText(vr)); // clobBW.flush();*/ // }catch(IOException e2){ // e2.printStackTrace(); // }finally{ // try{ // if(clobBW != null){ // fo.close(); //add by caill 2015.12.23 将fo关闭 // pw.close(); //add by caill 2015.12.23 将pw关闭 // clobBW.close(); // } // } catch (IOException e) { // e.printStackTrace(); // } // } // } // bw.flush(); // System.out.println("**************版本规则导出成功************"); // return true; // }catch(IOException e){ // e.printStackTrace(); // }finally{ // try { // if(bw != null){ // fos.close(); //add by caill 2015.12.23 将fos关闭 // osw.close(); //add by caill 2015.12.23 将osw关闭 // bw.close(); // } // } catch (IOException e) { // e.printStackTrace(); // } // } // System.out.println("**************版本规则导出失败************"); // return false; // } // // /** // * 将对象转化成字符串 // * {oid:qqq, name:q} // * @param vr // * @return // */ // public String getObjectText(VersionRule vr) { // StringBuilder stb = new StringBuilder("{"); // stb.append(OmdConstants.OID + ":" + vr.oid + ","); // stb.append(OmdConstants.NAME + ":" + vr.name + ","); // stb.append(OmdConstants.LABEL + ":" + vr.tag + ","); // stb.append(OmdConstants.DESCRIPTION + ":" + vr.description + ","); // stb.append(OmdConstants.TS + ":" + vr.ts + ","); // stb.append(OmdConstants.CREATOR + ":" + vr.creator + ","); // stb.append(OmdConstants.CREATETIME + ":" + vr.createTime + ","); // stb.append(OmdConstants.MODIFIER + ":" + vr.modifier + ","); // stb.append(OmdConstants.MODIFYTIME + ":" + vr.modifyTime); // stb.append("}"); // return stb.toString(); // } // /** * 将VersionRule转化成xmltext * @param bt * @return */ public String getXmlText(VersionRule vr){ StringBuilder stb = new StringBuilder(""); stb.append("" + vr.name + ""); stb.append("" + vr.tag + ""); stb.append("" + vr.jumpCharacter + ""); stb.append("" + vr.initialValue + ""); stb.append("" + vr.stepLength + ""); stb.append("" + vr.prefixion + ""); stb.append("" + vr.suffix + ""); stb.append("" + vr.description + ""); stb.append("" + vr.associated + ""); stb.append(""); return stb.toString(); } // // public List getVRsFromFile(String dir) { // File file = new File(dir + "/vr.txt"); // List list = new ArrayList(); // BufferedReader br = null; // FileInputStream fo = null; // InputStreamReader isw =null; // try { // /*r = new FileReader(file); // br = new BufferedReader(r);*/ // //add by caill start 2015.12.23 导入时将txt文件内容设置为“utf-8”格式 // fo = new FileInputStream(file); // isw = new InputStreamReader(fo, "utf-8"); // br = new BufferedReader(isw); // //add by caill end // String str = null; // while((str = br.readLine()) != null){ // Map map = getMapFormText(str); // String oid = map.get("oid"); // if(oid != null && !oid.equals("")){ // File contentFile = new File(dir + "/vr/" + oid + ".xml"); // if(!contentFile.exists()){ // System.out.println(dir + "/vr/" + oid + ".xml不存在"); // break; // } // VersionRule em = new VersionRule(); // em.oid = oid; // em.name = map.get("name"); // em.tag = map.get("label"); // em.ts = map.get("ts"); // em.creator = map.get("creator"); // em.createTime = map.get("createTime"); // em.modifier = map.get("modifier"); // em.modifyTime = map.get("modifyTime"); // em.description = map.get("description"); //add aby caill 2015.12.23 原代码中没有description一项,导致导入时,“描述”一栏没有值 // SAXReader sa = new SAXReader(); // //add by caill 2015.12.23 导入时将saxReader对象设置为“utf-8”格式 // sa.setEncoding("utf-8"); // Document document = sa.read(contentFile); // setVRValueFormDoc(em, document.getRootElement()); // list.add(em); // }else{ // System.out.println(dir + "vr.txt中存在oid为空的错误记录"); // break; // } // } // return list; // } catch (FileNotFoundException e) { // e.printStackTrace(); // } catch (IOException e) { // e.printStackTrace(); // } catch (DocumentException e) { // e.printStackTrace(); // } finally{ // if(br != null){ // try { // fo.close(); //add by caill 2015.12.23 将fo关闭 // isw.close(); //add by caill 2015.12.23 将isw关闭 // br.close(); // } catch (IOException e) { // e.printStackTrace(); // } // } // } // return null; // } // // /** // * 将文件中一条记录解析成key-value // * @param str // * @return // */ // public Map getMapFormText(String str) { // str = str.trim(); // if(!str.startsWith("{") || !str.endsWith("}")){ // return null; // } // Map map = new HashMap(); // str = str.substring(1, str.length() - 1); // String[] kvs = str.split(","); // for(String kv : kvs){ // String[] kv_ = kv.split(":"); // if(kv_.length == 1){ // map.put(kv_[0].trim(), ""); // }else{ // map.put(kv_[0].trim(), kv_[1].trim()); // } // } // return map; // } // /** * 设置EnumItem存在 * @param vr * @param element */ public void setVRValueFormDoc(VersionRule vr, Element element){ String value = element.elementText("jumpCharacter"); vr.jumpCharacter = (value == null ? "" : value); value = element.elementText("initialValue"); vr.initialValue = (value == null ? "" : value); value = element.elementText("stepLength"); vr.stepLength = (value == null ? "" : value); value = element.elementText("prefixion"); vr.prefixion = (value == null ? "" : value); value = element.elementText("suffix"); vr.suffix = (value == null ? "" : value); value = element.elementText("associated"); vr.associated = (value == null ? "" : value); } // // public boolean impData(VersionRule[] vrs) { // try { // for(VersionRule vr : vrs){ // VersionRule vr_ = getService().getVersionRule(vr.name); // //已经存在 // if(!vr_.oid.equals("")){ // getService().deleteVersionRule(vr_); // getService().addVersionRule(vr); // System.out.println(vr.name + "在数据库中已经存在, 覆盖。"); // }else{ // getService().addVersionRule(vr); // } // } // return true; // } catch (VCIError e) { // e.printStackTrace(); // } // return false; // } }