Package net.sourceforge.rtf.context

Source Code of net.sourceforge.rtf.context.RTFContextUtil

package net.sourceforge.rtf.context;

import java.io.File;
import java.io.IOException;
import java.util.Collection;
import java.util.Iterator;
import java.util.Map;

import net.sourceforge.rtf.context.fields.RTFContextBookmark;
import net.sourceforge.rtf.context.fields.RTFContextFields;
import net.sourceforge.rtf.context.fields.RTFContextField;

import org.xml.sax.SAXException;

/**
* Description : Manage RTF context object for fields XML available.
* @version 1.0.0
* @author <a href="mailto:angelo.zerr@gmail.com">Angelo ZERR</a>
*
*/
public class RTFContextUtil {

  /**
   * return true if objectType is list and false otherwise
   *
   * @param objectType
   * @return
   */
  public static boolean isList(Object o) {
    return o instanceof Collection;
  }



  // ///////// SAVE XML FIELDS

  public static void saveXmlFields(String fileXmlFields, RTFContextFields newFields, boolean force)
      throws SAXException, IOException {
    saveXmlFields(fileXmlFields, newFields, fileXmlFields, force);
  }

  public static void saveXmlFields(String inFileXmlFields, RTFContextFields newFields,
      String outFileXmlFields, boolean force) throws SAXException, IOException {
    if (!force) {
      // file must be updated, test if file exist
      File inFile = new File(inFileXmlFields);
      if (inFile.exists()) {
        // File exist, use digester to get RTFContextFields
        RTFContextFields oldFields = DigesterRTFContextFields
            .getRTFContextFields(inFile);
        // Get the description of the fields
        newFields.setDescription(oldFields.getDescription());
        // Get the map of the source XML fields
        Map oldContextFieldsMap = oldFields.getMergeFieldsMap();
        // Loop for New ContextFields
          for (Iterator iter = newFields.getMergeFields().iterator(); iter.hasNext();) {
            RTFContextField newField = (RTFContextField) iter.next();
            // Test if oldContextFieldsMap contains this field
            RTFContextField oldField = (RTFContextField)oldContextFieldsMap.get(newField.getName());
            if (oldField != null) {
              // Update description
              newField.setDescription(oldField.getDescription());
            }
          }
        // Get the map of the source XML fields
        Map oldContextBookmarksMap = oldFields.getBookmarksMap();
        // Loop for New ContextFields
          for (Iterator iter = newFields.getBookmarks().iterator(); iter.hasNext();) {
            RTFContextBookmark newBookmark = (RTFContextBookmark) iter.next();
            // Test if oldContextFieldsMap contains this bookmark
            RTFContextBookmark oldBookmark = (RTFContextBookmark)oldContextBookmarksMap.get(newBookmark.getType());
            if (oldBookmark != null) {
              // Update description of Bookmark
              newBookmark.setDescription(oldBookmark.getDescription());
            }
          }
      }
    }
    newFields.toXml(outFileXmlFields);
  }
}
TOP

Related Classes of net.sourceforge.rtf.context.RTFContextUtil

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.