/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.core.security.userstore.config; import java.util.Collection; import org.jdom.Document; import org.jdom.Element; import com.enonic.cms.api.plugin.ext.userstore.UserStoreConfig; import com.enonic.cms.api.plugin.ext.userstore.UserStoreConfigField; import com.enonic.cms.api.plugin.ext.userstore.UserFieldType; public class UserStoreConfigXmlCreator { public static Document createDocument( final UserStoreConfig userStoreConfig ) { return new Document( doCreateUserStoreConfigElement( userStoreConfig ) ); } public static Element createElement( final UserStoreConfig userStoreConfig ) { return doCreateUserStoreConfigElement( userStoreConfig ); } public static Element createEmptyConfigElement() { final Element configEl = new Element( "config" ); final Element userFieldsEl = new Element( "user-fields" ); configEl.addContent( userFieldsEl ); return configEl; } private static Element doCreateUserStoreConfigElement( final UserStoreConfig userStoreConfig ) { final Element configEl = new Element( "config" ); final Element customFieldsEl = new Element( "user-fields" ); configEl.addContent( customFieldsEl ); final Collection<UserStoreConfigField> fieldConfigs = userStoreConfig.getUserFieldConfigs(); for ( final UserStoreConfigField fieldConfig : fieldConfigs ) { customFieldsEl.addContent( doCreateFieldConfigElement( fieldConfig ) ); } return configEl; } private static Element doCreateFieldConfigElement( final UserStoreConfigField fieldConfig ) { final Element userFieldConfigEl = new Element( fieldConfig.getType().getName() ); userFieldConfigEl.setAttribute( "readonly", String.valueOf( fieldConfig.isReadOnly() ) ); userFieldConfigEl.setAttribute( "required", String.valueOf( fieldConfig.isRequired() ) ); userFieldConfigEl.setAttribute( "remote", String.valueOf( fieldConfig.isRemote() ) ); if ( fieldConfig.getType() == UserFieldType.ADDRESS ) { userFieldConfigEl.setAttribute( "iso", Boolean.valueOf( fieldConfig.useIso() ).toString() ); } return userFieldConfigEl; } }