/*
* codjo.net
*
* Common Apache License 2.0
*/
package net.codjo.control.common.loader;
import net.codjo.control.common.IntegrationPlan;
import net.codjo.xml.XmlException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
/**
* Ensemble des Plan d'integration pour une application.
*
* @version $Revision: 1.1 $
*/
public class ApplicationIP {
private String name;
private Collection<IntegrationDefinition> integrationDefinitions;
private Map<String, IntegrationPlan> plansByQuarantine = null;
private Map<Class, IntegrationPlan> plansByVoClass = null;
private Map<String, IntegrationPlan> plansById = null;
public ApplicationIP() {
}
public String getName() {
return name;
}
void loadAllPlans() throws IOException, XmlException {
if (plansByQuarantine != null) {
return;
}
plansByQuarantine = new HashMap<String, IntegrationPlan>();
plansByVoClass = new HashMap<Class, IntegrationPlan>();
plansById = new HashMap<String, IntegrationPlan>();
for (IntegrationDefinition integrationDefinition : getIntegrationDefinitions()) {
String plan = integrationDefinition.getPlanURI();
loadPlan(plan);
}
}
public void addIntegrationDefinition(IntegrationDefinition integrationDefinition) {
if (integrationDefinitions == null) {
integrationDefinitions = new ArrayList<IntegrationDefinition>();
}
integrationDefinitions.add(integrationDefinition);
}
public void loadPlan(String planFileName) throws IOException, XmlException {
IntegrationPlan plan = XmlMapperHelper.loadPlan(planFileName);
if (plan.getQuarantineTable() != null) {
plansByQuarantine.put(plan.getQuarantineTable(), plan);
}
if (plan.getEntity() != null) {
plansByVoClass.put(plan.getEntity().getEntityHelper().getBeanClass(), plan);
}
if (plan.getId() != null) {
plansById.put(plan.getId(), plan);
}
}
public IntegrationPlan getPlan(String quarantine) {
IntegrationPlan plan = plansByQuarantine.get(quarantine);
if (plan == null) {
throw new IllegalArgumentException("Aucun plan d'int�gration " + "pour "
+ quarantine);
}
return plan;
}
public IntegrationPlan getPlanById(String planId) {
IntegrationPlan plan = plansById.get(planId);
if (plan == null) {
throw new IllegalArgumentException("Aucun plan d'int�gration pour l'ID="
+ planId);
}
return plan;
}
public IntegrationPlan getPlan(Class beanClass) {
IntegrationPlan plan = plansByVoClass.get(beanClass);
if (plan == null) {
throw new IllegalArgumentException("Aucun plan d'int�gration "
+ "pour l'entit� " + beanClass);
}
return plan;
}
public void setName(String name) {
this.name = name;
}
public Collection<IntegrationDefinition> getIntegrationDefinitions() {
return integrationDefinitions;
}
public void setIntegrationDefinitions(Collection<IntegrationDefinition> integrationDefinitions) {
this.integrationDefinitions = integrationDefinitions;
}
}