Java tutorial
/* * Copyright 2014 Red Hat, Inc. and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.drools.workbench.jcr2vfsmigration.xml.format; import java.util.Date; import java.util.Iterator; import org.apache.commons.lang3.StringUtils; import org.drools.workbench.jcr2vfsmigration.xml.model.asset.DataModelAsset; import org.w3c.dom.NamedNodeMap; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import static org.drools.workbench.jcr2vfsmigration.xml.ExportXmlUtils.*; public class DataModelAssetFormat extends XmlAssetFormat { private static final String MODEL_OBJ = "modelObject"; private static final String MODEL_OBJ_NAME = "objName"; private static final String MODEL_OBJ_SUPERTYPE = "objSuperType"; private static final String MODEL_OBJ_PROP = "objProperty"; private static final String MODEL_OBJ_PROP_NAME = "objPropName"; private static final String MODEL_OBJ_PROP_TYPE = "objPropType"; private static final String MODEL_OBJ_ANN = "objAnnotation"; private static final String MODEL_OBJ_ANN_NAME = "objAnnName"; private static final String MODEL_OBJ_ANN_KEY = "objAnnKey"; private static final String MODEL_OBJ_ANN_VALUE = "objAnnValue"; protected String doFormat(DataModelAsset dataModelAsset) { StringBuilder sb = new StringBuilder(); for (Iterator<DataModelAsset.DataModelObject> objectIt = dataModelAsset.modelObjects(); objectIt .hasNext();) { DataModelAsset.DataModelObject obj = objectIt.next(); String objSuperType = StringUtils.isNotBlank(obj.getSuperType()) ? obj.getSuperType() : ""; sb.append(LT).append(MODEL_OBJ).append(" ").append(MODEL_OBJ_NAME).append("=\"").append(obj.getName()) .append("\"").append(" ").append(MODEL_OBJ_SUPERTYPE).append("=\"").append(objSuperType) .append("\"").append(GT); for (Iterator<DataModelAsset.DataObjectProperty> propIt = obj.properties(); propIt.hasNext();) { DataModelAsset.DataObjectProperty prop = propIt.next(); sb.append(LT).append(MODEL_OBJ_PROP).append(" ").append(MODEL_OBJ_PROP_NAME).append("=\"") .append(prop.getName()).append("\"").append(" ").append(MODEL_OBJ_PROP_TYPE).append("=\"") .append(prop.getType()).append("\"").append(SLASH_GT); } for (Iterator<DataModelAsset.DataObjectAnnotation> annIt = obj.annotations(); annIt.hasNext();) { DataModelAsset.DataObjectAnnotation ann = annIt.next(); sb.append(LT).append(MODEL_OBJ_ANN).append(" ").append(MODEL_OBJ_ANN_NAME).append("=\"") .append(ann.getName()).append("\"").append(" ").append(MODEL_OBJ_ANN_KEY).append("=\"") .append(escapeXml(ann.getKey())).append("\"").append(" ").append(MODEL_OBJ_ANN_VALUE) .append("=\"").append(escapeXml(ann.getValue())).append("\"").append(SLASH_GT); } sb.append(LT_SLASH).append(MODEL_OBJ).append(GT); } return sb.toString(); } protected DataModelAsset doParse(String name, String format, String lastContributor, String checkinComment, Date lastModified, Node assetNode) { DataModelAsset dataModel = new DataModelAsset(name, format, lastContributor, checkinComment, lastModified); NodeList modelNodeList = assetNode.getChildNodes(); for (int i = 0; i < modelNodeList.getLength(); i++) { Node objNode = modelNodeList.item(i); if (MODEL_OBJ.equalsIgnoreCase(objNode.getNodeName())) { NamedNodeMap objAttribs = objNode.getAttributes(); String objName = objAttribs.getNamedItem(MODEL_OBJ_NAME).getNodeValue(); String objSuperType = objAttribs.getNamedItem(MODEL_OBJ_SUPERTYPE).getNodeValue(); DataModelAsset.DataModelObject obj = dataModel.addDataModelObject(objName, objSuperType); NodeList objNodeList = objNode.getChildNodes(); for (int j = 0; j < objNodeList.getLength(); j++) { Node objChildNode = objNodeList.item(j); NamedNodeMap childNodeAttribs = objChildNode.getAttributes(); if (MODEL_OBJ_PROP.equalsIgnoreCase(objChildNode.getNodeName())) { obj.addObjectProperty(childNodeAttribs.getNamedItem(MODEL_OBJ_PROP_NAME).getNodeValue(), childNodeAttribs.getNamedItem(MODEL_OBJ_PROP_TYPE).getNodeValue()); } else if (MODEL_OBJ_ANN.equalsIgnoreCase(objChildNode.getNodeName())) { obj.addObjectAnnotation(childNodeAttribs.getNamedItem(MODEL_OBJ_ANN_NAME).getNodeValue(), unEscapeXml(childNodeAttribs.getNamedItem(MODEL_OBJ_ANN_KEY).getNodeValue()), unEscapeXml(childNodeAttribs.getNamedItem(MODEL_OBJ_ANN_VALUE).getNodeValue())); } } } } return dataModel; } }