package org.nightlabs.jfire.auth.ui.ldap.editor;
import java.util.Map;
import org.nightlabs.jfire.auth.ui.ldap.editor.LDAPScriptSetHelper.NamedScript;
import org.nightlabs.jfire.base.security.integration.ldap.LDAPScriptSet;
import org.nightlabs.jfire.base.security.integration.ldap.id.LDAPScriptSetID;
import org.nightlabs.jfire.base.security.integration.ldap.scripts.ILDAPScriptProvider;
/**
* Simple model of {@link LDAPScriptSet} to be used on UI in {@link LDAPServerScriptSetSection}.
* It just wraps around {@link LDAPScriptSet} and performs some additional data transformation and
* verification.
*
* @author Denis Dudnik <deniska.dudnik[at]gmail{dot}com>
*
*/
public class LDAPServerScriptSetModel {
private LDAPScriptSet ldapScriptSet;
public LDAPServerScriptSetModel(LDAPScriptSet ldapScriptSet) {
this.ldapScriptSet = ldapScriptSet;
}
/**
* Get ID of underlying {@link LDAPScriptSet} object.
*
* @return {@link LDAPScriptSetID}
*/
public LDAPScriptSetID getLDAPScriptSetID(){
return LDAPScriptSetID.create(ldapScriptSet.getOrganisationID(), ldapScriptSet.getLdapScriptSetID());
}
/**
* Get content of a script as {@link String} by its name. Script name is one of constants defined in {@link LDAPScriptSetHelper}.
*
* @param scriptName script name
* @return script's content
*/
public String getScriptContentById(String scriptID){
if (ILDAPScriptProvider.BIND_VARIABLES_SCRIPT_ID.equals(scriptID)){
return ldapScriptSet.getBindVariablesScript();
}else if (ILDAPScriptProvider.GET_ENTRY_NAME_SCRIPT_ID.equals(scriptID)){
return ldapScriptSet.getLdapDNScript();
}else if (ILDAPScriptProvider.GET_ATTRIBUTE_SET_SCRIPT_ID.equals(scriptID)){
return ldapScriptSet.getGenerateJFireToLdapAttributesScript();
}else if (ILDAPScriptProvider.GET_PARENT_ENTRIES_SCRIPT_ID.equals(scriptID)){
return ldapScriptSet.getGenerateParentLdapEntriesScript();
}else if (ILDAPScriptProvider.SYNC_TO_JFIRE_SCRIPT_ID.equals(scriptID)){
return ldapScriptSet.getSyncLdapToJFireScript();
}else{
return ""; //$NON-NLS-1$
}
}
/**
* Sets modified script content to underlying {@link LDAPScriptSet} instance.
* @param namedScriptsLocal
*
* @param namedScripts
*/
public void commitScriptContent(Map<String, NamedScript> namedScriptsLocal){
for (NamedScript script : namedScriptsLocal.values()){
String scriptID = script.getScriptID();
String scriptContent = script.getScriptContent();
if (ILDAPScriptProvider.BIND_VARIABLES_SCRIPT_ID.equals(scriptID)){
ldapScriptSet.setBindVariablesScript(scriptContent);
}else if (ILDAPScriptProvider.GET_ENTRY_NAME_SCRIPT_ID.equals(scriptID)){
ldapScriptSet.setLdapDNScript(scriptContent);
}else if (ILDAPScriptProvider.GET_ATTRIBUTE_SET_SCRIPT_ID.equals(scriptID)){
ldapScriptSet.setGenerateJFireToLdapAttributesScript(scriptContent);
}else if (ILDAPScriptProvider.GET_PARENT_ENTRIES_SCRIPT_ID.equals(scriptID)){
ldapScriptSet.setGenerateParentLdapEntriesScript(scriptContent);
}else if (ILDAPScriptProvider.SYNC_TO_JFIRE_SCRIPT_ID.equals(scriptID)){
ldapScriptSet.setSyncLdapToJFireScript(scriptContent);
}
}
}
}