// Path: src/java/com/idega/documentmanager/component/beans/LocalizedStringBean.java
// public class LocalizedStringBean {
// 	
// 	private Map<Locale, String> strings;
// 	
// 	public LocalizedStringBean() {
// 		strings = new HashMap<Locale, String>();
// 	}
// 	
// 	public LocalizedStringBean(String defaultString) {
// 		strings = new HashMap<Locale, String>();
// 		setString(new Locale("en"), defaultString);
// 	}
// 	
// 	public Set<Locale> getLanguagesKeySet() {
// 		return strings.keySet();
// 	}
// 	
// 	/**
// 	 * if You don't want to change the text, provide text value as null
// 	 * 
// 	 * @param locale
// 	 * @param text
// 	 */
// 	public void setString(Locale locale, String text) {
// 		
// 		if(locale == null)
// 			throw new NullPointerException("Locale is not provided");
// 		
// 		strings.put(locale, text);
// 	}
// 	
// 	public String getString(Locale locale) {
// 		return strings.get(locale);
// 	}
// 	
// 	public void removeString(Locale locale) {
// 		strings.remove(locale);
// 	}
// 	
// 	public void clear() {
// 		strings.clear();
// 	}
// 	public String toString() {
// 		
// 		StringBuffer toString = new StringBuffer("LocalizedStringBean:");
// 		
// 		
// 		for (Iterator<Locale> iter = strings.keySet().iterator(); iter.hasNext();) {
// 			Locale locale = iter.next();
// 			
// 			toString.append("\nlocale: ")
// 			.append(locale.toString())
// 			.append(" value: ")
// 			.append(strings.get(locale));
// 		}
// 		
// 		return toString.toString();
// 	}
// }
// 
// Path: src/java/com/idega/documentmanager/component/datatypes/ComponentType.java
// public class ComponentType {
// 	
// 	private String type;
// 	private List<String> datatypes = new ArrayList<String>();
// 	private String accessSupport;
// 	
// 	public ComponentType() {
// 		
// 	}
// 	
// 	public ComponentType(String id, String accessSupport) {
// 		this.type = id;
// 		this.accessSupport = accessSupport;
// 	}
// 	
// 	public String getType() {
// 		return type;
// 	}
// 	public void setType(String type) {
// 		this.type = type;
// 	}
// 	public List<String> getDatatypes() {
// 		return datatypes;
// 	}
// 	public void setDatatypes(List<String> datatypes) {
// 		this.datatypes = datatypes;
// 	}
// 	public String getAccessSupport() {
// 		return accessSupport;
// 	}
// 	public void setAccessSupport(String accessSupport) {
// 		this.accessSupport = accessSupport;
// 	}
// 
// }


import java.io.File;
import java.io.IOException;
import java.io.StringWriter;
import java.text.CharacterIterator;
import java.text.StringCharacterIterator;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.regex.Pattern;
import javax.xml.parsers.DocumentBuilder;
import org.apache.xml.serialize.OutputFormat;
import org.apache.xml.serialize.XMLSerializer;
import org.chiba.xml.dom.DOMUtil;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import com.idega.chiba.web.xml.xforms.util.XFormsUtil;
import com.idega.documentmanager.component.beans.LocalizedStringBean;
import com.idega.documentmanager.component.datatypes.ComponentType;
import com.idega.util.CoreConstants;
import com.idega.util.LocaleUtil;
import com.idega.util.xml.Prefix;
import com.idega.util.xml.XPathUtil;
import com.idega.util.xml.XmlUtil;
		if(appendToContext) {
			el = (Element)context.appendChild(el);
		}
		
		return el;
	}
	
	public static NodeList getElementsContainingAttribute(Node context, String elementName, String attributeName) {
		
		if(isEmpty(elementName))
			elementName = CoreConstants.STAR;
		
		if(isEmpty(attributeName))
			attributeName = CoreConstants.STAR;
		
		synchronized (elementsContainingAttributeXPath) {
		
			elementsContainingAttributeXPath.clearVariables();
			elementsContainingAttributeXPath.setVariable(elementNameVariable, elementName);
			elementsContainingAttributeXPath.setVariable(attributeNameVariable, attributeName);
			
			return elementsContainingAttributeXPath.getNodeset(context);
		}
	}
	
	private static Element getDataModelSetValueElement(Node context) {
		
		return localizaionSetValueElement.getNode(context);
	}
	
// Path: src/java/com/idega/documentmanager/component/beans/LocalizedStringBean.java
// public class LocalizedStringBean {
// 	
// 	private Map<Locale, String> strings;
// 	
// 	public LocalizedStringBean() {
// 		strings = new HashMap<Locale, String>();
// 	}
// 	
// 	public LocalizedStringBean(String defaultString) {
// 		strings = new HashMap<Locale, String>();
// 		setString(new Locale("en"), defaultString);
// 	}
// 	
// 	public Set<Locale> getLanguagesKeySet() {
// 		return strings.keySet();
// 	}
// 	
// 	/**
// 	 * if You don't want to change the text, provide text value as null
// 	 * 
// 	 * @param locale
// 	 * @param text
// 	 */
// 	public void setString(Locale locale, String text) {
// 		
// 		if(locale == null)
// 			throw new NullPointerException("Locale is not provided");
// 		
// 		strings.put(locale, text);
// 	}
// 	
// 	public String getString(Locale locale) {
// 		return strings.get(locale);
// 	}
// 	
// 	public void removeString(Locale locale) {
// 		strings.remove(locale);
// 	}
// 	
// 	public void clear() {
// 		strings.clear();
// 	}
// 	public String toString() {
// 		
// 		StringBuffer toString = new StringBuffer("LocalizedStringBean:");
// 		
// 		
// 		for (Iterator<Locale> iter = strings.keySet().iterator(); iter.hasNext();) {
// 			Locale locale = iter.next();
// 			
// 			toString.append("\nlocale: ")
// 			.append(locale.toString())
// 			.append(" value: ")
// 			.append(strings.get(locale));
// 		}
// 		
// 		return toString.toString();
// 	}
// }
// 
// Path: src/java/com/idega/documentmanager/component/datatypes/ComponentType.java
// public class ComponentType {
// 	
// 	private String type;
// 	private List<String> datatypes = new ArrayList<String>();
// 	private String accessSupport;
// 	
// 	public ComponentType() {
// 		
// 	}
// 	
// 	public ComponentType(String id, String accessSupport) {
// 		this.type = id;
// 		this.accessSupport = accessSupport;
// 	}
// 	
// 	public String getType() {
// 		return type;
// 	}
// 	public void setType(String type) {
// 		this.type = type;
// 	}
// 	public List<String> getDatatypes() {
// 		return datatypes;
// 	}
// 	public void setDatatypes(List<String> datatypes) {
// 		this.datatypes = datatypes;
// 	}
// 	public String getAccessSupport() {
// 		return accessSupport;
// 	}
// 	public void setAccessSupport(String accessSupport) {
// 		this.accessSupport = accessSupport;
// 	}
// 
// }


// Path: src/java/com/idega/documentmanager/util/FormManagerUtil.java
import java.io.File;
import java.io.IOException;
import java.io.StringWriter;
import java.text.CharacterIterator;
import java.text.StringCharacterIterator;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.regex.Pattern;
import javax.xml.parsers.DocumentBuilder;
import org.apache.xml.serialize.OutputFormat;
import org.apache.xml.serialize.XMLSerializer;
import org.chiba.xml.dom.DOMUtil;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import com.idega.chiba.web.xml.xforms.util.XFormsUtil;
import com.idega.documentmanager.component.beans.LocalizedStringBean;
import com.idega.documentmanager.component.datatypes.ComponentType;
import com.idega.util.CoreConstants;
import com.idega.util.LocaleUtil;
import com.idega.util.xml.Prefix;
import com.idega.util.xml.XPathUtil;
import com.idega.util.xml.XmlUtil;

		if(appendToContext) {
			el = (Element)context.appendChild(el);
		}
		
		return el;
	}
	
	public static NodeList getElementsContainingAttribute(Node context, String elementName, String attributeName) {
		
		if(isEmpty(elementName))
			elementName = CoreConstants.STAR;
		
		if(isEmpty(attributeName))
			attributeName = CoreConstants.STAR;
		
		synchronized (elementsContainingAttributeXPath) {
		
			elementsContainingAttributeXPath.clearVariables();
			elementsContainingAttributeXPath.setVariable(elementNameVariable, elementName);
			elementsContainingAttributeXPath.setVariable(attributeNameVariable, attributeName);
			
			return elementsContainingAttributeXPath.getNodeset(context);
		}
	}
	
	private static Element getDataModelSetValueElement(Node context) {
		
		return localizaionSetValueElement.getNode(context);
	}
	
	public static Map<String, List<ComponentType>> getComponentsTypesByDatatype(Document form_components_doc) {