/* * Copyright 2012 The Solmix Project * * This 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 software 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 may not use this file except in compliance with the License. * You may obtain a copy of the License at * http://www.gnu.org/licenses/ * or see the FSF site: http://www.fsf.org. */ package org.solmix.api.datasource; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.solmix.api.jaxb.TdataSource; import org.solmix.api.jaxb.Tfield; import org.solmix.api.jaxb.Tfields; import org.solmix.api.jaxb.ToperationBinding; import org.solmix.api.jaxb.ToperationBindings; import org.solmix.api.jaxb.Tvalidator; import org.solmix.api.jaxb.Tvalidators; import org.solmix.api.jaxb.Tvalue; import org.solmix.api.jaxb.TvalueMap; /** * * @author ffz * @version 2012-3-31 * @since 0.0.4 */ public class ConvertDSContextToMap { public static Map<String, ?> toClientValueMap(TdataSource tds) { Map<String, Object> tdsm = new HashMap<String, Object>(); tdsm.put("ID", tds.getID()); if (tds.getAddGlobalId() != null) tdsm.put("addGlobalId", tds.getAddGlobalId()); if (tds.isAutoCacheAllData() != null) tdsm.put("autoCacheAllData", tds.isAutoCacheAllData()); if (tds.isCacheAllData() != null) tdsm.put("cacheAllData", tds.isCacheAllData()); if (tds.getCacheData() != null) tdsm.put("cacheData", tds.getCacheData()); if (tds.getCacheMaxAge() != null) tdsm.put("cacheMaxAge", tds.getCacheMaxAge()); if (tds.getDataProtocol() != null) tdsm.put("dataProtocol", tds.getDataProtocol().value()); if (tds.getDataURL() != null) tdsm.put("dataURL", tds.getDataURL()); if (tds.getDropUnknownCriteria() != null) tdsm.put("dropUnknownCriteria", tds.getDropUnknownCriteria()); if (tds.getDataTransport() != null) tdsm.put("dataTransport", tds.getDataTransport().value()); if (tds.getRecordXPath() != null) tdsm.put("recordXPath", tds.getRecordXPath()); if (tds.getTagName() != null) tdsm.put("tagName", tds.getTagName()); if (tds.isUseHttpProxy() != null) tdsm.put("useHttpProxy", tds.isUseHttpProxy()); if (tds.getDataFormat() != null) tdsm.put("dataFormat", tds.getDataFormat().value()); if (tds.getTestFileName() != null) tdsm.put("testFileName", tds.getTestFileName()); if (tds.getTitleField() != null) tdsm.put("titleField", tds.getTitleField()); if (tds.getIconField() != null) tdsm.put("iconField", tds.getIconField()); if (tds.getInfoField() != null) tdsm.put("infoField", tds.getInfoField()); if (tds.getDataField() != null) tdsm.put("dataField", tds.getDataField()); if (tds.getDescriptionField() != null) tdsm.put("descriptionField", tds.getDescriptionField()); if (tds.isClientOnly() != null) tdsm.put("clientOnly", tds.isClientOnly()); if (tds.isShowPrompt() != null) tdsm.put("showPrompt", tds.isShowPrompt()); if (tds.getInheritsFrom() != null) tdsm.put("inheritsFrom", tds.getInheritsFrom()); if (tds.isUseFlatFields() != null) tdsm.put("useFlatFields", tds.isUseFlatFields()); if (tds.getCallbackParam() != null) tdsm.put("callbackParam", tds.getCallbackParam()); // if (tds.getFields() != null) { List<Object> fields = getFiledsMap(tds.getFields()); tdsm.put("fields", fields); } if (tds.getOperationBindings() != null) { List<Object> ops = getOperationBindingsMap(tds.getOperationBindings()); tdsm.put("operationBindings", ops); } return tdsm; } private static Object getValueMap(TvalueMap vm) { List<Tvalue> vs= vm.getValue(); Map<String,String> m = new HashMap<String,String>(); for(Tvalue v:vs){ m.put(v.getId(), v.getName()); } return m; } private static List<Object> getValidatorsMap(Tvalidators vd) { List<Object> _return = new ArrayList<Object>(); List<Tvalidator> vs = vd.getValidator(); for (Tvalidator v : vs) { if (v.isClientOnly()) { Map<String, Object> vm = new HashMap<String, Object>(); _return.add(vm); vm.put("clientOnly", v.isClientOnly()); if (v.getType() != null) vm.put("type", v.getType()); if (v.getErrorMessage() != null) vm.put("errorMessage", v.getErrorMessage()); if (v.getMax() != null) vm.put("max", v.getMax()); if (v.getMin() != null) vm.put("min", v.getMin()); if (v.isExclusive()) vm.put("exclusive", v.isExclusive()); if (v.getMask() != null) vm.put("mask", v.getMask()); if (v.getPrecision() != null) vm.put("precision", v.getPrecision()); if (v.getExpression() != null) vm.put("expression", v.getExpression()); if (v.getSubstring() != null) vm.put("substring", v.getSubstring()); if (v.getOperator() != null) vm.put("operator", v.getOperator()); if (v.getCount() != null) vm.put("count", v.getCount()); } } return _return; } private static List<Object> getFiledsMap(Tfields fields) { List<Object> _return = new ArrayList<Object>(); List<Tfield> fs = fields.getField(); for (Tfield f : fs) { Map<String, Object> fm = new HashMap<String, Object>(); _return.add(fm); fm.put("name", f.getName()); if (f.isHidden()) { fm.put("hidden", f.isHidden()); } if (f.isIgnore() != null) fm.put("ignore", f.isIgnore()); if (f.getTitle() != null) fm.put("title", f.getTitle()); if (f.getType() != null) fm.put("type", f.getType().value()); if (f.isRequired() != null) fm.put("required", f.isRequired()); if (f.getNativeName() != null) fm.put("nativeName", f.getNativeName()); if (f.isCanEdit() != null) fm.put("canEdit", f.isCanEdit()); if (f.isCanExport() != null) fm.put("canExport", f.isCanExport()); if (f.isCanFilter() != null) fm.put("canFilter", f.isCanFilter()); if (f.isCanSave() != null) fm.put("canSave", f.isCanSave()); if (f.isCanSortClientOnly() != null) fm.put("canSortClientOnly", f.isCanSortClientOnly()); if (f.isCanView() != null) fm.put("canView", f.isCanView()); if (f.isDetail() != null) fm.put("detail", f.isDetail()); if (f.isEscapeHTML() != null) fm.put("escapeHTML", f.isEscapeHTML()); if (f.getExportTitle() != null) fm.put("exportTitle", f.getExportTitle()); if (f.getPluralTitle() != null) fm.put("pluralTitle", f.getPluralTitle()); if (f.getPrompt() != null) fm.put("prompt", f.getPrompt()); if (f.isMultiple() != null) fm.put("multiple", f.isMultiple()); if (f.getDateFormat() != null) fm.put("dateFormat", f.getDateFormat()); if (f.getImageHeight() != null) fm.put("imageHeight", f.getImageHeight()); if (f.getImageSize() != null) fm.put("imageSize", f.getImageSize()); if (f.getImageWidth() != null) fm.put("imageWidth", f.getImageWidth()); if (f.getLength() != null) fm.put("length", f.getLength()); if (f.getMaxFileSize() != null) fm.put("maxFileSize", f.getMaxFileSize()); if (f.isPrimaryKey()) fm.put("primaryKey", f.isPrimaryKey()); if (f.getForeignKey() != null) fm.put("foreignKey", f.getForeignKey()); if (f.getRootValue() != null) fm.put("rootValue", f.getRootValue()); if (f.getIncludeFrom() != null) fm.put("includeFrom", f.getIncludeFrom()); // valuemap if (f.getValueMap() != null) { fm.put("valueMap", getValueMap(f.getValueMap())); } // validators if (f.getValidators() != null) { List<Object> vs = getValidatorsMap(f.getValidators()); if (vs.size() > 0) fm.put("validators", vs); } } return _return; } private static List<Object> getOperationBindingsMap(ToperationBindings ops) { List<Object> _return = new ArrayList<Object>(); List<ToperationBinding> os = ops.getOperationBinding(); for (ToperationBinding o : os) { Map<String, Object> om = new HashMap<String, Object>(); _return.add(om); if (o.getDataProtocol() != null) om.put("dataProtocol", o.getDataProtocol()); if (o.isAllowMultiUpdate() != null) om.put("allowMultiUpdate", o.isAllowMultiUpdate()); if (o.getOperationType() != null) om.put("operationType", o.getOperationType()); if (o.getOperationId() != null) om.put("operationId", o.getOperationId()); if (o.getCallbackParam() != null) om.put("callbackParam", o.getCallbackParam()); } return _return; } }