📄 jsourcecodewizardprocessorxml.java
字号:
/**
* IgaLib -> wizard
* Copyright (C) 2001 Tosiki IGA , IgaLib project member
* (http://homepage2.nifty.com/igat/igapyon/index.html)
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
package jp.ne.nifty.iga.tosiki.wizard;
import jp.ne.nifty.iga.tosiki.string.*;
import java.io.*;
import java.util.*;
/**
* JSourceCodeWizardProcessor 偺僿儖僷乕僋儔僗<BR>
* XML晹暘偱偡<BR>
*
* @author Tosiki IGA
*/
public class JSourceCodeWizardProcessorXml
{
/**
* XML娭楢嫟捠娭悢傪偢偽偭偲憓擖偟傑偡丅
*/
public static final void writeXmlFunction(
JSourceCodeWizard wizard,JSourceCodeWizardChannel dataChannel,ArrayList vecItem,IndentWriter out)
throws IOException
{
out.println(" /**");
out.println(" * 梌偊傜傟偨Node傪僷乕僗偟偰僼傿乕儖僪偵戙擖偟傑偡");
out.println(" * ");
out.println(" * @param Node nodeLook 擖椡僲乕僪");
out.println(" */");
out.println(" public void parse(org.w3c.dom.Node nodeLook)");
out.println(" {");
out.println(" org.w3c.dom.NodeList nodelistLook=nodeLook.getChildNodes();");
out.println(" for(int indexKey=0;indexKey<nodelistLook.getLength();indexKey++)");
out.println(" {");
out.println(" org.w3c.dom.Node nodeItemLook=nodelistLook.item(indexKey);");
out.println(" if(nodeItemLook.getNodeType()!=org.w3c.dom.Node.ELEMENT_NODE)");
out.println(" {");
out.println(" continue;");
out.println(" }");
out.println("");
out.println(" org.w3c.dom.Element eleItemLook=(org.w3c.dom.Element)nodeItemLook;");
boolean isFirstXmlElement=true;
for(int index=0;index<vecItem.size();index++)
{
JSourceCodeWizardField item=(JSourceCodeWizardField)vecItem.get(index);
if(item.isAvailableXml()==false)
{
continue;
}
String strElementName="\""+item.getName()+"\"";
if(item.getChild()!=null
&& WizType.isWizPremitiveTypeWithChild(item)==false)
{
strElementName=item.getChild()+".getWizardShortName()";
}
out.println(" "+(isFirstXmlElement?"":"else ")+"if(eleItemLook.getTagName().equals("+strElementName+"))");
out.println(" {");
out.addIndent(4);
item.writeXmlSetParam(out);
out.addIndent(-4);
out.println(" }");
isFirstXmlElement=false;
}
if(isFirstXmlElement==false)
{
out.println(" else");
out.println(" {");
out.println(" System.out.println(\""+JSourceCodeWizardProcessor.getMyClassName(wizard,wizard.getChannel())+": Unknown element [\"+eleItemLook.getTagName()+\"]\");");
out.println(" }");
}
out.println(" }");
out.println(" }");
out.println("");
out.println(" /**");
out.println(" * 梌偊傜傟偨XML僼傽僀儖傪僷乕僗偟偰僼傿乕儖僪偵戙擖偟傑偡");
out.println(" * ");
out.println(" * @param File fileXmlFile 擖椡XML僼傽僀儖");
out.println(" */");
out.println(" public void parseXml(File fileXmlFile)");
out.println(" throws IOException");
out.println(" {");
out.println(" InputStream inStream=new BufferedInputStream(new FileInputStream(fileXmlFile));");
out.println(" try{");
out.println(" javax.xml.transform.Transformer transformer=javax.xml.transform.TransformerFactory.newInstance().newTransformer();");
out.println(" javax.xml.transform.dom.DOMResult domResult=new javax.xml.transform.dom.DOMResult();");
out.println(" transformer.transform(new javax.xml.transform.stream.StreamSource(inStream),domResult);");
out.println(" org.w3c.dom.Document document=(org.w3c.dom.Document)domResult.getNode();");
out.println(" parse(document.getDocumentElement());");
out.println(" }catch(javax.xml.transform.TransformerException ex){");
out.println(" System.out.println(ex.toString());");
out.println(" ex.printStackTrace();");
out.println(" }");
out.println(" inStream.close();");
out.println(" }");
out.println("");
out.println(" /**");
out.println(" * 梌偊傜傟偨Element偵僼傿乕儖僪傪彂偒弌偟傑偡");
out.println(" * ");
out.println(" * @param Document document 僪僉儏儊儞僩");
out.println(" * @param Element elementParent 恊僲乕僪");
out.println(" */");
out.println(" public void serialize(org.w3c.dom.Document document,org.w3c.dom.Element elementParent)");
out.println(" {");
out.println(" org.w3c.dom.Comment commentMySelf=document.createComment(\""+dataChannel.getName()+"("+dataChannel.getTitle()+")\");");
out.println(" if(elementParent!=null)elementParent.appendChild(commentMySelf);");
out.println(" org.w3c.dom.Element elementMyself=document.createElement(\""+dataChannel.getName()+"\");");
for(int index=0;index<vecItem.size();index++)
{
JSourceCodeWizardField item=(JSourceCodeWizardField)vecItem.get(index);
if(item.isAvailableXml()==false)
{
continue;
}
out.println(" {");
out.println(" StringBuffer strbuf"+JSourceCodeWizardProcessor.getUpper(item.getName())+"=new StringBuffer();");
out.println(" strbuf"+JSourceCodeWizardProcessor.getUpper(item.getName())+".append(\""+item.getName()+"("+item.getTitle()+")"+"\");");
out.println(" strbuf"+JSourceCodeWizardProcessor.getUpper(item.getName())+".append(\" 宆:"+item.getType()+"\");");
if(item.getDefault()!=null)
{
out.println(" strbuf"+JSourceCodeWizardProcessor.getUpper(item.getName())+".append(\" 僨僼僅儖僩抣:["+EscapeUtil.encodeQuote(item.getDefault())+"]\");");
}
if(item.getDescription()!=null)
{
out.println(" strbuf"+JSourceCodeWizardProcessor.getUpper(item.getName())+".append(\" 愢柧:"+EscapeUtil.encodeQuote(item.getDescription())+"\");");
}
out.println(" org.w3c.dom.Comment comment"+JSourceCodeWizardProcessor.getUpper(item.getName())+"=document.createComment(strbuf"+JSourceCodeWizardProcessor.getUpper(item.getName())+".toString());");
out.println(" elementMyself.appendChild(comment"+JSourceCodeWizardProcessor.getUpper(item.getName())+");");
out.println(" }");
String strNewlyLine=null;
boolean isPremetive=true;
if("boolean".equals(item.getType())
|| "char".equals(item.getType())
|| "int".equals(item.getType()))
{
// 僨僼僅儖僩抣偐偳偆偐傪僠僃僢僋偟偰偐傜弌椡偟偰偄傞偺偑僇儚僀僀丅
strNewlyLine=" if(get"+JSourceCodeWizardProcessor.getUpper(item.getName())+"()!="+item.getDefault()+")";
strNewlyLine+="element"+JSourceCodeWizardProcessor.getUpper(item.getName())+".appendChild(document.createTextNode("+WizType.getConvertPatternForType(item.getType(),"String","get"+JSourceCodeWizardProcessor.getUpper(item.getName())+"()")+"));";
}
else if("String".equals(item.getType())
|| "java.math.BigDecimal".equals(item.getType()))
{
// 僨僼僅儖僩抣偐偳偆偐傪僠僃僢僋偟偰偐傜弌椡偟偰偄傞偺偑僇儚僀僀丅
strNewlyLine=" if(get"+JSourceCodeWizardProcessor.getUpper(item.getName())+"()!=null)";
strNewlyLine+="element"+JSourceCodeWizardProcessor.getUpper(item.getName())+".appendChild(document.createTextNode("+WizType.getConvertPatternForType(item.getType(),"String","get"+JSourceCodeWizardProcessor.getUpper(item.getName())+"()")+"));";
}
else
{
isPremetive=false;
if(item.getChild()==null)
{
strNewlyLine=" f_"+item.getName()+".serialize(document,elementMyself);";
}
else
{
out.println(" if(f_"+item.getName()+"!=null)for(int index=0;index<f_"+item.getName()+".size();index++)");
out.println(" {");
if(WizType.isWizPremitiveTypeWithChild(item))
{
out.println(1," // 幚尡揑");
out.println(1," "+item.getChild()+" itemLook=("+item.getChild()+")f_"+item.getName()+".get(index);");
out.println(1," org.w3c.dom.Element element"+JSourceCodeWizardProcessor.getUpper(item.getName())+"=document.createElement(\""+item.getName()+"\");");
out.println(1," element"+JSourceCodeWizardProcessor.getUpper(item.getName())+".appendChild(document.createTextNode("+WizType.getConvertPatternForType(item.getChild(),"String","itemLook")+"));");
out.println(1," elementMyself.appendChild(element"+JSourceCodeWizardProcessor.getUpper(item.getName())+");");
}
else
{
out.println(1," "+item.getChild()+" itemLook=("+item.getChild()+")f_"+item.getName()+".get(index);");
out.println(1," itemLook.serialize(document,elementMyself);");
}
out.println(" }");
}
}
if(isPremetive)out.println(" org.w3c.dom.Element element"+JSourceCodeWizardProcessor.getUpper(item.getName())+"=document.createElement(\""+item.getName()+"\");");
if(strNewlyLine!=null)out.println(strNewlyLine);
if(isPremetive)out.println(" elementMyself.appendChild(element"+JSourceCodeWizardProcessor.getUpper(item.getName())+");");
}
out.println(" if(elementParent!=null)");
out.println(" {");
out.println(" elementParent.appendChild(elementMyself);");
out.println(" }");
out.println(" else");
out.println(" {");
out.println(" document.appendChild(elementMyself);");
out.println(" }");
out.println(" }");
out.println("");
out.println(" /**");
out.println(" * 梌偊傜傟偨XML僼傽僀儖偵彂偒弌偟偟傑偡");
out.println(" * ");
out.println(" * @param File fileXmlFile 弌椡XML僼傽僀儖");
out.println(" */");
out.println(" public void serializeXml(File fileXmlFile)");
out.println(" throws IOException");
out.println(" {");
out.println(" org.w3c.dom.Document document=null;");
out.println(" try{");
out.println(" javax.xml.parsers.DocumentBuilder documentBuilder=javax.xml.parsers.DocumentBuilderFactory.newInstance().newDocumentBuilder();");
out.println(" document=documentBuilder.newDocument();");
out.println(" }catch(javax.xml.parsers.ParserConfigurationException ex){");
out.println(" System.out.println(ex.toString());");
out.println(" ex.printStackTrace();");
out.println(" throw new IOException(ex.toString());");
out.println(" }");
out.println(" serialize(document,null);");
out.println(" OutputStream outStream=new BufferedOutputStream(new FileOutputStream(fileXmlFile));");
out.println(" try{");
out.println(" javax.xml.transform.Transformer transformer=javax.xml.transform.TransformerFactory.newInstance().newTransformer();");
out.println(" transformer.setOutputProperty(\"encoding\",\"Shift_JIS\");");
out.println(" transformer.setOutputProperty(\"standalone\",\"yes\");");
out.println(" transformer.setOutputProperty(\"indent\",\"yes\");");
out.println(" transformer.setOutputProperty(\"{http://xml.apache.org/xslt}indent-amount\",\"2\");");
out.println(" transformer.transform(new javax.xml.transform.dom.DOMSource(document),new javax.xml.transform.stream.StreamResult(outStream));");
out.println(" }catch(javax.xml.transform.TransformerException ex){");
out.println(" System.out.println(ex.toString());");
out.println(" ex.printStackTrace();");
out.println(" }");
out.println(" outStream.flush();");
out.println(" outStream.close();");
out.println(" }");
out.println("");
out.println(" /**");
out.println(" * 梌偊傜傟偨Node偵娷傑傟傞暥帤楍傪庢傝弌偟傑偡");
out.println(" * ");
out.println(" * @param Node nodeLook 擖椡僲乕僪");
out.println(" */");
out.println(" public static final String getTextNodeValue(org.w3c.dom.Node nodeLook)");
out.println(" {");
out.println(" StringBuffer strbufWrk=new StringBuffer();");
out.println(" org.w3c.dom.NodeList nodelistItems=nodeLook.getChildNodes();");
out.println(" if(nodelistItems.getLength()==0)return null;");
out.println(" for(int indexItem=0;indexItem<nodelistItems.getLength();indexItem++)");
out.println(" {");
out.println(" org.w3c.dom.Node nodeText=nodelistItems.item(indexItem);");
out.println(" if(nodeText.getNodeType()==org.w3c.dom.Node.TEXT_NODE)");
out.println(" {");
out.println(" strbufWrk.append(nodeText.getNodeValue());");
out.println(" }");
out.println(" }");
out.println(" return strbufWrk.toString();");
out.println(" }");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -