/******************************************************************************* * Copyright (c) 2007 Red Hat, Inc. * Distributed under license by Red Hat, Inc. All rights reserved. * This program is made available under the terms of the * Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Red Hat, Inc. - initial API and implementation ******************************************************************************/ package org.jboss.tools.smooks; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Iterator; import java.util.List; import org.eclipse.emf.common.command.Command; import org.eclipse.emf.common.command.CompoundCommand; import org.eclipse.emf.common.util.EList; import org.eclipse.emf.ecore.EStructuralFeature; import org.eclipse.emf.ecore.util.ExtendedMetaData; import org.eclipse.emf.ecore.util.FeatureMapUtil; import org.eclipse.emf.ecore.xml.type.AnyType; import org.eclipse.emf.ecore.xml.type.XMLTypePackage; import org.eclipse.emf.edit.command.AddCommand; import org.eclipse.emf.edit.command.CommandParameter; import org.eclipse.emf.edit.command.RemoveCommand; import org.eclipse.emf.edit.domain.EditingDomain; import org.jboss.tools.smooks.core.SmooksInputType; import org.jboss.tools.smooks.model.freemarker.Freemarker; import org.jboss.tools.smooks.model.smooks.AbstractResourceConfig; import org.jboss.tools.smooks.model.smooks.ConditionType; import org.jboss.tools.smooks.model.smooks.ConditionsType; import org.jboss.tools.smooks.model.smooks.SmooksResourceListType; /** * @author Dart Peng * */ public class SmooksModelUtils { public static final String KEY_TEMPLATE_TYPE = "messageType"; //$NON-NLS-1$ public static final String TEMPLATE_DATA_PROVIDER_PARAM_NAME = "templateDataProvider"; //$NON-NLS-1$ public static final String FREEMARKER_TEMPLATE_TYPE_CSV = "CSV"; //$NON-NLS-1$ public static final String FREEMARKER_TEMPLATE_TYPE_XML = "XML"; //$NON-NLS-1$ public static final String KEY_CSV_FIELDS = "csvFields"; //$NON-NLS-1$ public static final String KEY_INCLUDE_FIELD_NAMES = "includeFieldNames"; //$NON-NLS-1$ public static final String KEY_TASK_ID_REF = "idref"; //$NON-NLS-1$ public static final String KEY_OBJECT_ID = "id"; //$NON-NLS-1$ public static final String KEY_XML_FILE_TYPE = "modelSrcType"; //$NON-NLS-1$ public static final String KEY_XML_FILE_PATH = "modelSrc"; //$NON-NLS-1$ public static final String KEY_XML_ROOT_NAME = "rootElementName"; //$NON-NLS-1$ public static final String KEY_XML_FILE_TYPE_XSD = "XSD"; //$NON-NLS-1$ public static final String KEY_XML_FILE_TYPE_XML = "XML"; //$NON-NLS-1$ public static final String KEY_CSV_SEPERATOR = "seperator"; //$NON-NLS-1$ public static final String KEY_CSV_QUOTE = "quote"; //$NON-NLS-1$ public static final String INPUT_TYPE_JAVA = SmooksInputType.INPUT_TYPE_JAVA; public static final String INPUT_TYPE = "inputType"; //$NON-NLS-1$ public static final String INPUT_TYPE_CUSTOME = SmooksInputType.INPUT_TYPE_CUSTOM; public static final String INPUT_TYPE_JSON_1_1 = SmooksInputType.INPUT_TYPE_JSON; public static final String INPUT_TYPE_CSV = SmooksInputType.INPUT_TYPE_CSV; public static final String INPUT_ACTIVE_TYPE = "input.type.actived"; //$NON-NLS-1$ public static final String INPUT_DEACTIVE_TYPE = "input.type.deactived"; //$NON-NLS-1$ public static final String INPUT_TYPE_CSV_1_2 = SmooksInputType.INPUT_TYPE_CSV; public static final String PARAM_NAME_CLASS = "class"; //$NON-NLS-1$ public static final String PARAM_NAME_PATH = "path"; //$NON-NLS-1$ public static final String PARAM_NAME_ACTIVED = "actived"; //$NON-NLS-1$ public static final String INPUT_TYPE_XML = SmooksInputType.INPUT_TYPE_XML; public static final String INPUT_TYPE_XSD = SmooksInputType.INPUT_TYPE_XSD; public static final String TYPE_XSL = "xsl"; //$NON-NLS-1$ public static final String[] TEMPLATE_TYPES = new String[] { "xsl", "ftl" }; //$NON-NLS-1$ //$NON-NLS-2$ public static final String BEAN_CLASS = "beanClass"; //$NON-NLS-1$ public static final String BEAN_ID = "beanId"; //$NON-NLS-1$ public static final String BINDINGS = "bindings"; //$NON-NLS-1$ public static final String INPUT_TYPE_EDI_1_1 = SmooksInputType.INPUT_TYPE_EDI; public static final String INPUT_TYPE_EDI_1_2 = SmooksInputType.INPUT_TYPE_EDI; public static final String INPUT_TYPE_JSON_1_2 = SmooksInputType.INPUT_TYPE_JSON; public static EStructuralFeature ATTRIBUTE_PROPERTY = ExtendedMetaData.INSTANCE.demandFeature(null, "property", //$NON-NLS-1$ false); public static EStructuralFeature ATTRIBUTE_SELECTOR = ExtendedMetaData.INSTANCE.demandFeature(null, "selector", //$NON-NLS-1$ false); public static EStructuralFeature ATTRIBUTE_TYPE = ExtendedMetaData.INSTANCE.demandFeature(null, "type", false); //$NON-NLS-1$ public static EStructuralFeature ELEMENT_BINDING = ExtendedMetaData.INSTANCE.demandFeature( "http://www.milyn.org/xsd/smooks-1.0.xsd", "binding", true); //$NON-NLS-1$ //$NON-NLS-2$ // public static AnyType addBindingTypeToParamType(ParamType param, String // property, String selector, String type, // String uri) { // AnyType binding = createBindingType(property, selector, type, uri); // param.getMixed().add(ELEMENT_BINDING, binding); // return binding; // } // // public static List<Object> // getBindingListFromResourceConfigType(ResourceConfigType resourceConfig) { // List<ParamType> paramList = resourceConfig.getParam(); // for (Iterator<ParamType> iterator = paramList.iterator(); // iterator.hasNext();) { // ParamType param = iterator.next(); // if ("bindings".equals(param.getName())) { // if (param.eContents().isEmpty()) // continue; // List<Object> bindingList = (List<Object>) // param.getMixed().list(SmooksModelUtils.ELEMENT_BINDING); // return bindingList; // } // } // return Collections.emptyList(); // } // // public static boolean isBeanPopulatorResource(ResourceConfigType type) { // ResourceType resource = type.getResource(); // if (resource == null) // return false; // String value = resource.getStringValue(); // if (value != null) // value = value.trim(); // if (SmooksModelConstants.BEAN_POPULATOR.equals(value)) { // return true; // } // return false; // } public static void setPropertyValueToAnyType(Object value, EStructuralFeature attribute, AnyType anyType) { anyType.getAnyAttribute().set(attribute, value); } // public static AnyType getBindingViaProperty(ResourceConfigType // resourceConfig, String property) { // List bindingList = getBindingListFromResourceConfigType(resourceConfig); // for (Iterator iterator = bindingList.iterator(); iterator.hasNext();) { // AnyType binding = (AnyType) iterator.next(); // String pro = getAttributeValueFromAnyType(binding, ATTRIBUTE_PROPERTY); // if (pro != null) // pro = pro.trim(); // if (property.equals(pro)) { // return binding; // } // } // return null; // } // // public static boolean isInnerFileContents(ResourceConfigType // resourceConfig) { // ResourceType resource = resourceConfig.getResource(); // if (resource == null) // return false; // String type = resource.getType(); // if (type != null) // type = type.trim(); // for (int i = 0; i < TEMPLATE_TYPES.length; i++) { // String type1 = TEMPLATE_TYPES[i]; // if (type1.equalsIgnoreCase(type)) // return true; // } // return false; // } // // public static boolean isDateTypeSelector(ResourceConfigType type) { // ResourceType resource = type.getResource(); // if (resource == null) // return false; // String value = resource.getStringValue(); // if (value != null) // value = value.trim(); // for (int i = 0; i < SmooksModelConstants.DECODER_CLASSES.length; i++) { // String decoderClass = SmooksModelConstants.DECODER_CLASSES[i]; // if (decoderClass.equals(value)) { // return true; // } // } // return false; // } // // public static String getTransformType(ResourceConfigType resourceConfig) // { // ParamType typeParam = null; // if (resourceConfig == null) // return ""; // if (isTransformTypeResourceConfig(resourceConfig)) { // List paramList = resourceConfig.getParam(); // for (Iterator iterator = paramList.iterator(); iterator.hasNext();) { // ParamType param = (ParamType) iterator.next(); // String name = param.getName(); // if (name != null) // name = name.trim(); // if (SmooksModelConstants.STREAM_FILTER_TYPE.equals(name)) { // typeParam = param; // break; // } // } // if (typeParam != null) { // return SmooksModelUtils.getAnyTypeText(typeParam); // } // } // return ""; // } // // public static void setTransformType(ResourceConfigType resourceConfig, // String type) { // if (type == null) // type = ""; // if (isTransformTypeResourceConfig(resourceConfig)) { // List paramList = resourceConfig.getParam(); // for (Iterator iterator = paramList.iterator(); iterator.hasNext();) { // ParamType param = (ParamType) iterator.next(); // if (SmooksModelConstants.STREAM_FILTER_TYPE.equals(param.getName())) { // cleanTextToSmooksType(param); // setTextToAnyType(param, type); // } // } // } // } // // public static boolean isFilePathResourceConfig(ResourceConfigType // resourceConfig) { // ResourceType resource = resourceConfig.getResource(); // if (resource != null) { // String value = resource.getStringValue(); // if (value != null) { // if (value.startsWith("\\")) { // return true; // } // if (value.startsWith("/")) { // return true; // } // } // } // return false; // } // // public static boolean isTransformTypeResourceConfig(ResourceConfigType // resourceConfig) { // String selector = resourceConfig.getSelector(); // if (selector != null) // selector = selector.trim(); // if (!SmooksModelConstants.GLOBAL_PARAMETERS.equals(selector)) { // return false; // } // // if (resourceConfig.getParam().isEmpty()) { // return false; // } else { // List paramList = resourceConfig.getParam(); // for (Iterator iterator = paramList.iterator(); iterator.hasNext();) { // ParamType p = (ParamType) iterator.next(); // String paramName = p.getName(); // if (paramName != null) // paramName = paramName.trim(); // if (SmooksModelConstants.STREAM_FILTER_TYPE.equals(paramName)) { // return true; // } // } // return false; // } // } // // public static void setParamText(String paramName, String value, // ResourceConfigType resourceConfigType) { // List<ParamType> list = resourceConfigType.getParam(); // ParamType param = null; // for (Iterator<ParamType> iterator = list.iterator(); iterator.hasNext();) // { // ParamType paramType = (ParamType) iterator.next(); // String n = paramType.getName(); // if (n == null) // continue; // n = n.trim(); // if (n.equalsIgnoreCase(paramName)) { // param = paramType; // break; // } // } // if (param == null) { // param = SmooksFactory.eINSTANCE.createParamType(); // param.setName(paramName); // resourceConfigType.getParam().add(param); // } // setTextToAnyType(param, value); // } // // public static String getParmaText(String paramName, ResourceConfigType // resourceConfigType) { // List plist = resourceConfigType.getParam(); // for (Iterator iterator = plist.iterator(); iterator.hasNext();) { // ParamType p = (ParamType) iterator.next(); // String n = p.getName(); // if (n == null) // continue; // n = n.trim(); // if (paramName.equalsIgnoreCase(n)) { // return getAnyTypeText(p); // } // } // return null; // } public static String getAttributeValueFromAnyType(AnyType anyType, EStructuralFeature attribute) { String value = (String) anyType.getAnyAttribute().get(attribute, false); return value; } public static String getAnyTypeText(AnyType anyType) { Object value = anyType.getMixed().get(XMLTypePackage.Literals.XML_TYPE_DOCUMENT_ROOT__TEXT, true); if (value != null) { if (value instanceof List && !((List<?>) value).isEmpty()) { Object v = ((List<?>) value).get(0); if (v != null) { return v.toString().trim(); } } // return value.toString(); } return null; } public static String getAnyTypeCDATA(AnyType anyType) { Object value = anyType.getMixed().get(XMLTypePackage.Literals.XML_TYPE_DOCUMENT_ROOT__CDATA, true); if (value != null) { if (value instanceof List && !((List) value).isEmpty()) { Object v = ((List) value).get(0); if (v != null) { return v.toString().trim(); } } // return value.toString(); } return null; } public static String getAnyTypeComment(AnyType anyType) { EList<Object> value = anyType.getMixed().list(XMLTypePackage.Literals.XML_TYPE_DOCUMENT_ROOT__COMMENT); if (value != null && !value.isEmpty()) { Object v = ((List<?>) value).get(0); if (v != null) { return v.toString().trim(); } // return value.toString(); } return null; } // public static AnyType createBindingType(String property, String selector, // String type, String uri) { // if (uri == null) { // uri = SmooksPackage.eNS_URI; // } // // AnyType binding = (AnyType) // EcoreUtil.create(XMLTypePackage.Literals.ANY_TYPE); // if (property != null) { // binding.getAnyAttribute().add(ATTRIBUTE_PROPERTY, property); // } // // if (selector != null) { // binding.getAnyAttribute().add(ATTRIBUTE_SELECTOR, selector); // } // if (type != null) { // binding.getAnyAttribute().add(ATTRIBUTE_TYPE, false); // } // return binding; // } public static void appendTextToSmooksType(AnyType smooksModel, String text) { smooksModel.getMixed().add(XMLTypePackage.Literals.XML_TYPE_DOCUMENT_ROOT__TEXT, text); } public static void setTextToSmooksType(EditingDomain editingDomain, AnyType smooksModel, String text) { CompoundCommand ccommand = new CompoundCommand(); Command addCommand = null; if (text != null) { addCommand = AddCommand.create(editingDomain, smooksModel, XMLTypePackage.Literals.ANY_TYPE__MIXED, FeatureMapUtil.createEntry(XMLTypePackage.Literals.XML_TYPE_DOCUMENT_ROOT__TEXT, text)); } Object removeValue = (smooksModel.getMixed().get(XMLTypePackage.Literals.XML_TYPE_DOCUMENT_ROOT__TEXT, true)); if (removeValue != null && removeValue instanceof Collection<?>) { List<Object> rList = new ArrayList<Object>(); for (Iterator<?> iterator = ((Collection<?>) removeValue).iterator(); iterator.hasNext();) { Object string = (Object) iterator.next(); rList.add(FeatureMapUtil.createEntry(XMLTypePackage.Literals.XML_TYPE_DOCUMENT_ROOT__TEXT, string)); } Command cc = RemoveCommand.create(editingDomain, smooksModel, null, rList); if (cc != null && cc.canExecute()) { ccommand.append(cc); } } if (addCommand != null && addCommand.canExecute()) { ccommand.append(addCommand); } if (smooksModel.eContainer() == null) { ccommand.execute(); } else { editingDomain.getCommandStack().execute(ccommand); } } public static void setCommentToSmooksType(EditingDomain editingDomain, AnyType smooksModel, String comment) { CompoundCommand ccommand = new CompoundCommand(); Command addCommand = null; if (comment != null) { addCommand = AddCommand.create(editingDomain, smooksModel, XMLTypePackage.Literals.ANY_TYPE__MIXED, FeatureMapUtil.createEntry(XMLTypePackage.Literals.XML_TYPE_DOCUMENT_ROOT__COMMENT, comment)); } Object removeValue = (smooksModel.getMixed().get(XMLTypePackage.Literals.XML_TYPE_DOCUMENT_ROOT__COMMENT, true)); if (removeValue != null && removeValue instanceof Collection<?>) { List<Object> rList = new ArrayList<Object>(); for (Iterator<?> iterator = ((Collection<?>) removeValue).iterator(); iterator.hasNext();) { Object string = (Object) iterator.next(); rList.add(FeatureMapUtil.createEntry(XMLTypePackage.Literals.XML_TYPE_DOCUMENT_ROOT__COMMENT, string)); } Command cc = RemoveCommand.create(editingDomain, smooksModel, null, rList); if (cc != null && cc.canExecute()) { ccommand.append(cc); } } if (addCommand != null && addCommand.canExecute()) { ccommand.append(addCommand); } if (smooksModel.eContainer() == null) { ccommand.execute(); } else { editingDomain.getCommandStack().execute(ccommand); } } public static void setCDATAToSmooksType(EditingDomain editingDomain, AnyType smooksModel, String cdata) { CompoundCommand ccommand = new CompoundCommand(); Command addCommand = null; if (cdata != null) { addCommand = AddCommand.create(editingDomain, smooksModel, XMLTypePackage.Literals.ANY_TYPE__MIXED, FeatureMapUtil.createEntry(XMLTypePackage.Literals.XML_TYPE_DOCUMENT_ROOT__CDATA, cdata)); } Object removeValue = (smooksModel.getMixed().get(XMLTypePackage.Literals.XML_TYPE_DOCUMENT_ROOT__CDATA, true)); if (removeValue != null && removeValue instanceof Collection<?>) { List<Object> rList = new ArrayList<Object>(); for (Iterator<?> iterator = ((Collection<?>) removeValue).iterator(); iterator.hasNext();) { Object string = (Object) iterator.next(); rList.add(FeatureMapUtil.createEntry(XMLTypePackage.Literals.XML_TYPE_DOCUMENT_ROOT__CDATA, string)); } Command cc = RemoveCommand.create(editingDomain, smooksModel, null, rList); if (cc != null && cc.canExecute()) { ccommand.append(cc); } } if (addCommand != null && addCommand.canExecute()) { ccommand.append(addCommand); } if (smooksModel.eContainer() == null) { ccommand.execute(); } else { editingDomain.getCommandStack().execute(ccommand); } } public static void appendCDATAToSmooksType(AnyType smooksModel, String text) { smooksModel.getMixed().add(XMLTypePackage.Literals.XML_TYPE_DOCUMENT_ROOT__CDATA, text); } /** * @deprecated * @param smooksModel * @param text */ public static void setTextToAnyType(AnyType smooksModel, String text) { cleanTextToSmooksType(smooksModel); appendTextToSmooksType(smooksModel, text); } /** * @deprecated * @param smooksModel * @param text */ public static void setCDATAToAnyType(AnyType smooksModel, String text) { cleanCDATAToSmooksType(smooksModel); appendCDATAToSmooksType(smooksModel, text); } public static void cleanTextToSmooksType(AnyType smooksModel) { Object obj = smooksModel.getMixed().get(XMLTypePackage.Literals.XML_TYPE_DOCUMENT_ROOT__TEXT, true); if (obj instanceof List) { ((List) obj).clear(); } } public static void cleanCDATAToSmooksType(AnyType smooksModel) { Object obj = smooksModel.getMixed().get(XMLTypePackage.Literals.XML_TYPE_DOCUMENT_ROOT__CDATA, true); if (obj instanceof List) { ((List) obj).clear(); } } public static CommandParameter createTextCommandParamter(Object owner, String value) { return createChildParameter(owner, XMLTypePackage.Literals.ANY_TYPE__MIXED, FeatureMapUtil.createEntry( XMLTypePackage.Literals.XML_TYPE_DOCUMENT_ROOT__TEXT, value)); } public static CommandParameter createChildParameter(Object owner, Object feature, Object child) { return new CommandParameter(owner, feature, child); } // public static String getInputPath(InputType input) { // List<org.jboss.tools.smooks.model.graphics.ext.ParamType> list = // input.getParam(); // if (INPUT_TYPE_JAVA.equals(input.getType()) || // INPUT_TYPE_XML.equals(input.getType()) // || INPUT_TYPE_XSD.equals(input.getType()) || // INPUT_TYPE_JSON_1_1.equals(input.getType()) // || INPUT_TYPE_JSON_1_2.equals(input.getType()) || // INPUT_TYPE_CSV.equals(input.getType()) // || INPUT_TYPE_EDI_1_1.equals(input.getType()) || // INPUT_TYPE_EDI_1_2.equals(input.getType()) // || INPUT_TYPE_CSV_1_2.equals(input.getType())) { // for (Iterator<?> iterator = list.iterator(); iterator.hasNext();) { // org.jboss.tools.smooks.model.graphics.ext.ParamType paramType = // (org.jboss.tools.smooks.model.graphics.ext.ParamType) iterator // .next(); // if ("path".equals(paramType.getName())) { // String value = paramType.getValue(); // if (value != null) // value = value.trim(); // return value; // } // } // } // return null; // } public static List<ConditionType> collectConditionType(SmooksResourceListType resourceList) { ConditionsType conditions = resourceList.getConditions(); if (conditions != null) { return conditions.getCondition(); } return Collections.emptyList(); } public static List<org.jboss.tools.smooks.model.smooks.ParamType> getParams(AnyType model) { if (model == null) return Collections.emptyList(); List<org.jboss.tools.smooks.model.smooks.ParamType> obj = model.getMixed().list( org.jboss.tools.smooks.model.smooks.SmooksPackage.Literals.DOCUMENT_ROOT__PARAM); return obj; } public static void addParam(AnyType model, org.jboss.tools.smooks.model.smooks.ParamType param) { if (model == null) return; model.getMixed().add( XMLTypePackage.Literals.ANY_TYPE__MIXED, FeatureMapUtil.createEntry( org.jboss.tools.smooks.model.smooks.SmooksPackage.Literals.DOCUMENT_ROOT__PARAM, param)); } public static char getFreemarkerCSVSeperator(Freemarker freemarker) { org.jboss.tools.smooks.model.smooks.ParamType typeParam = getParam(freemarker.getParam(), KEY_CSV_SEPERATOR); if (typeParam != null) { String value = typeParam.getStringValue(); if (value != null && value.length() == 1) { return value.toCharArray()[0]; } } return 0; } public static char getFreemarkerCSVQuote(Freemarker freemarker) { org.jboss.tools.smooks.model.smooks.ParamType typeParam = getParam(freemarker.getParam(), KEY_CSV_QUOTE); if (typeParam != null) { String value = typeParam.getStringValue(); if (value != null && value.length() == 1) { return value.toCharArray()[0]; } } return 0; } public static boolean getFreemarkerCSVIncludeFieldNames(Freemarker freemarker) { org.jboss.tools.smooks.model.smooks.ParamType typeParam = getParam(freemarker.getParam(), KEY_INCLUDE_FIELD_NAMES); if (typeParam != null) { String value = typeParam.getStringValue(); if (value != null) { return value.equals("true"); //$NON-NLS-1$ } } return false; } public static String getFreemarkerXMLFileType(Freemarker freemarker) { org.jboss.tools.smooks.model.smooks.ParamType typeParam = getParam(freemarker.getParam(), KEY_XML_FILE_TYPE); if (typeParam != null) { String value = typeParam.getStringValue(); return value; } return null; } public static String getFreemarkerXMLFilePath(Freemarker freemarker) { org.jboss.tools.smooks.model.smooks.ParamType typeParam = getParam(freemarker.getParam(), KEY_XML_FILE_PATH); if (typeParam != null) { String value = typeParam.getStringValue(); return value; } return null; } public static String getFreemarkerXMLRootName(Freemarker freemarker) { org.jboss.tools.smooks.model.smooks.ParamType typeParam = getParam(freemarker.getParam(), KEY_XML_ROOT_NAME); if (typeParam != null) { String value = typeParam.getStringValue(); return value; } return null; } public static String getTemplateType(Freemarker freemarker) { if (freemarker == null) return null; org.jboss.tools.smooks.model.smooks.ParamType typeParam = getParam(freemarker.getParam(), KEY_TEMPLATE_TYPE); if (typeParam != null) { return typeParam.getStringValue(); } return null; } public static String[] getFreemarkerCSVFileds(Freemarker freemarker) { org.jboss.tools.smooks.model.smooks.ParamType typeParam = getParam(freemarker.getParam(), KEY_CSV_FIELDS); if (typeParam != null) { String value = typeParam.getStringValue(); if (value != null) { value = value.trim(); if (!"".equals(value)) { //$NON-NLS-1$ return value.split(","); //$NON-NLS-1$ } } } return null; } public static org.jboss.tools.smooks.model.smooks.ParamType getParam(AnyType model, String paramName) { List<org.jboss.tools.smooks.model.smooks.ParamType> params = getParams(model); for (Iterator<?> iterator = params.iterator(); iterator.hasNext();) { org.jboss.tools.smooks.model.smooks.ParamType paramType = (org.jboss.tools.smooks.model.smooks.ParamType) iterator .next(); if (paramName.equals(paramType.getName())) { return paramType; } } return null; } public static org.jboss.tools.smooks.model.smooks.ParamType getParam( List<org.jboss.tools.smooks.model.smooks.ParamType> params, String paramName) { for (Iterator<?> iterator = params.iterator(); iterator.hasNext();) { org.jboss.tools.smooks.model.smooks.ParamType paramType = (org.jboss.tools.smooks.model.smooks.ParamType) iterator .next(); if (paramName.equals(paramType.getName())) { return paramType; } } return null; } public static String getParamValue(AnyType model, String paramName) { List<org.jboss.tools.smooks.model.smooks.ParamType> params = getParams(model); for (Iterator<?> iterator = params.iterator(); iterator.hasNext();) { org.jboss.tools.smooks.model.smooks.ParamType paramType = (org.jboss.tools.smooks.model.smooks.ParamType) iterator .next(); if (paramName.equals(paramType.getName())) { return paramType.getStringValue(); } } return null; } public static String getParamValue(List<org.jboss.tools.smooks.model.smooks.ParamType> params, String paramName) { for (Iterator<?> iterator = params.iterator(); iterator.hasNext();) { org.jboss.tools.smooks.model.smooks.ParamType paramType = (org.jboss.tools.smooks.model.smooks.ParamType) iterator .next(); if (paramName.equals(paramType.getName())) { return paramType.getStringValue(); } } return null; } public static String generateTaskID(SmooksResourceListType resourceList, Class<?> modelClass, String baseID) { List<AbstractResourceConfig> configList = resourceList.getAbstractResourceConfig(); int index = 0; List<AbstractResourceConfig> modelList = new ArrayList<AbstractResourceConfig>(); for (Iterator<?> iterator = configList.iterator(); iterator.hasNext();) { AbstractResourceConfig abstractResourceConfig = (AbstractResourceConfig) iterator.next(); if (modelClass.isInstance(abstractResourceConfig)) { modelList.add(abstractResourceConfig); // index++; } } String id = baseID + String.valueOf(index); int i = 0; for (i = 0; i < modelList.size(); i++) { AbstractResourceConfig abstractResourceConfig = modelList.get(i); String idref = null; if (abstractResourceConfig instanceof Freemarker) { idref = SmooksModelUtils.getParamValue(((Freemarker) abstractResourceConfig).getParam(), SmooksModelUtils.KEY_OBJECT_ID); } if (idref == null) { idref = SmooksModelUtils.getParamValue(abstractResourceConfig, SmooksModelUtils.KEY_OBJECT_ID); } if (id.equals(idref)) { index++; id = baseID + String.valueOf(index); i = 0; continue; } } return id; } }