/* * Copyright 2002-2006 the original author or authors. * * 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.openuap.cms.cm.data; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.StringWriter; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; import org.apache.commons.io.IOUtils; import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.io.OutputFormat; import org.dom4j.io.XMLWriter; import org.openuap.cms.CmsPlugin; import org.openuap.cms.cm.manager.ContentTableManager; import org.openuap.cms.cm.model.ContentField; import org.openuap.cms.cm.model.ContentTable; import org.openuap.cms.data.AbstractDataExporter; import org.openuap.runtime.util.ObjectLocator; /** * <p> * 内容模型导出器. * </p> * * <p> * $Id: CmDataExporter.java 3925 2010-10-26 11:54:14Z orangeforjava $ * </p> * @author Joseph * @version 3.0 */ public class CmDataExporter extends AbstractDataExporter { public void exportData(Map parameters) { try { ContentTableManager ctManager = (ContentTableManager) ObjectLocator .lookup("contentTableManager", CmsPlugin.PLUGIN_ID); String ids = null; if (parameters != null) { ids = (String) parameters.get("ids"); } if (ids == null) { ids = "all"; } if (ids.equals("all")) { List<ContentTable> cts = ctManager.getAllContentTable(); for(ContentTable ct:cts){ //不要使用中文,在Linux环境中会有问题 String fileName ="cm-"+ct.getEntityName()+".xml"; File file=new File(dataDir, fileName); String xml=exportContentTable(ct); IOUtils.write(xml, new FileOutputStream(file), "UTF-8"); } } else { final String[] idary = ids.split(","); for (int i = 0; i < idary.length; i++) { String id = idary[i]; ContentTable ct=ctManager.getContentTableById(new Long(id)); //更改为实体名 String fileName =ct.getEntityName(); File file=new File(dataDir, fileName); String xml=exportContentTable(ct); IOUtils.write(xml, new FileOutputStream(file), "UTF-8"); } } } catch (Exception e) { e.printStackTrace(); } } /** * * @param ct * @return */ public String exportContentTable(ContentTable ct) { Document document = DocumentHelper.createDocument(); Element ctElement = document.addElement("ContentTable"); ctElement.addAttribute("tableId", ct.getTableId().toString()); Element nameElement = ctElement.addElement("name"); nameElement.addCDATA(ct.getContentTableName()); Element systemElement = ctElement.addElement("system"); systemElement.addText(ct.getSystem().toString()); Element tableNameElement = ctElement.addElement("tableName"); tableNameElement.addText(ct.getTableName()); Element entityNameElement = ctElement.addElement("entityName"); entityNameElement.addText(ct.getEntityName()); Element entityPublishNameElement = ctElement .addElement("entityPublishName"); entityPublishNameElement.addText(ct.getEntityPublishName()); Element allowIndexElement = ctElement.addElement("allowIndex"); allowIndexElement.addText(new Integer(ct.getAllowIndex()).toString()); Element lastIndexDateElement = ctElement.addElement("lastIndexDate"); lastIndexDateElement .addText(new Long(ct.getLastIndexDate()).toString()); // Element fieldsElement = ctElement.addElement("fields"); Set fieldsSet = ct.getContentFieldsSet(); if (fieldsSet != null && fieldsSet.size() > 0) { Iterator fieldsIterator = fieldsSet.iterator(); while (fieldsIterator.hasNext()) { ContentField field = (ContentField) fieldsIterator.next(); Element fieldElement = fieldsElement.addElement("field"); fieldElement.addAttribute("contentFieldId", field .getContentFieldId().toString()); fieldElement.addElement("fieldTitle").addCDATA( field.getFieldTitle()); fieldElement.addElement("fieldName").addCDATA( field.getFieldName()); fieldElement.addElement("fieldType").addText( field.getFieldType()); fieldElement.addElement("fieldSize").addText( field.getFieldSize()); fieldElement.addElement("fieldInput").addText( field.getFieldInput()); fieldElement.addElement("fieldDefaultValue").addCDATA( field.getFieldDefaultValue()); fieldElement.addElement("fieldInputFilter").addCDATA( field.getFieldInputFilter()); fieldElement.addElement("fieldInputPicker").addCDATA( field.getFieldInputPicker()); fieldElement.addElement("fieldInputPickerExtra").addCDATA( field.getFieldInputPickerExtra()); fieldElement.addElement("fieldInputTpl").addCDATA( field.getFieldInputTpl()); fieldElement.addElement("fieldDescription").addCDATA( field.getFieldDescription()); fieldElement.addElement("fieldOrder").addText( field.getFieldOrder().toString()); fieldElement.addElement("fieldListDisplay").addText( field.getFieldListDisplay().toString()); fieldElement.addElement("mainField").addText( field.getMainField().toString()); fieldElement.addElement("titleField").addText( field.getTitleField().toString()); fieldElement.addElement("keywordsField").addText( field.getKeywordsField().toString()); fieldElement.addElement("photoField").addText( field.getPhotoField().toString()); fieldElement.addElement("fieldSearchable").addText( field.getFieldSearchable().toString()); fieldElement.addElement("enableContribution").addText( field.getEnableContribution().toString()); fieldElement.addElement("enableCollection").addText( field.getEnableCollection().toString()); fieldElement.addElement("enablePublish").addText( field.getEnablePublish().toString()); fieldElement.addElement("enableStatics").addText( field.getEnableStatics().toString()); fieldElement.addElement("indexType").addText( field.getIndexType()); fieldElement.addElement("storeType").addText( field.getStoreType()); fieldElement.addElement("termVectorType").addText( field.getStoreType()); } } StringWriter rs = new StringWriter(); try { /** 格式化输出,类型IE浏览一样 */ OutputFormat format = OutputFormat.createPrettyPrint(); /** 指定XML编码 */ format.setEncoding("UTF-8"); XMLWriter writer = new XMLWriter(rs, format); writer.write(document); writer.close(); } catch (IOException e) { e.printStackTrace(); } return rs.toString(); } public int getBackupFileNum() { return 0; } }