/*
* Created on Jan 23, 2004
*
* To change the template for this generated file go to
* Window - Preferences - Java - Code Generation - Code and Comments
*/
package org.vfny.geoserver.config.validation;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import org.geotools.validation.dto.PlugInDTO;
import org.geotools.validation.dto.TestSuiteDTO;
/**
* ValidationConfig purpose.
* <p>
* Description of ValidationConfig ...
* </p>
*
* @author dzwiers, Refractions Research, Inc.
* @author $Author: dmzwiers $ (last modification)
* @version $Id: ValidationConfig.java,v 1.5 2004/03/09 02:12:25 dmzwiers Exp $
*/
public class ValidationConfig {
public static final String CONFIG_KEY = "Validation.Config";
private Map plugIns;
private Map testSuites;
/**
* ValidationConfig constructor.
* <p>
* Description
* </p>
*
*/
public ValidationConfig() {
super();
plugIns = new HashMap();
testSuites = new HashMap();
}
/**
* ValidationConfig constructor.
* <p>
* Description
* </p>
* @param plugIns a List of PlugInDTO objects
* @param testSuites a List of TestSuiteDTO objects
*/
public ValidationConfig(Map plugIns, Map testSuites){
this.plugIns = new HashMap();
this.testSuites = new HashMap();
Iterator i = null;
i = plugIns.keySet().iterator();
while(i.hasNext()){
PlugInDTO dto = (PlugInDTO)plugIns.get(i.next());
PlugInConfig config = new PlugInConfig(dto);
this.plugIns.put(config.getName(),config);
}
i = testSuites.keySet().iterator();
while(i.hasNext()){
TestSuiteDTO dto = (TestSuiteDTO)testSuites.get(i.next());
TestSuiteConfig config = new TestSuiteConfig(dto,this.plugIns);
this.testSuites.put(config.getName(),config);
}
}
/**
*
* getPlugIn purpose.
* <p>
* Gets a PlugInConfig
* </p>
* @param name
* @return PlugInConfig or null if one does not exist
*/
public PlugInConfig getPlugIn(String name){
if(name == null)
return null;
return (PlugInConfig)plugIns.get(name);
}
/**
*
* getTestSuite purpose.
* <p>
* Gets a TestSuiteConfig
* </p>
* @param name
* @return TestSuiteConfig or null if one does not exist
*/
public TestSuiteConfig getTestSuite(String name){
if(name == null)
return null;
return (TestSuiteConfig)testSuites.get(name);
}
/**
*
* getTest purpose.
* <p>
* Gets a TestConfig
* </p>
* @param name
* @param testSuite
* @return TestSuiteConfig or null if one does not exist
*/
public TestConfig getTest(String name, String testSuite){
if(name == null || testSuite == null)
return null;
TestSuiteConfig tcn = getTestSuite(testSuite);
if(tcn == null)
return null;
return (TestConfig)tcn.getTests().get(name);
}
/**
*
* addPlugIn purpose.
* <p>
* Adds the plugin.
* </p>
* @param plugIn
* @return true
*/
public boolean addPlugIn(PlugInConfig plugIn){
plugIns.put(plugIn.getName(), plugIn);
return true;
}
/**
*
* addTest purpose.
* <p>
* Adds the test to the specified testSuite.
* </p>
* @param test
* @param testSuite
* @return true on sucess (requires specified plugin to exist), false otherwise.
*/
public boolean addTest(TestConfig test, String testSuite){
TestSuiteConfig tsc = (TestSuiteConfig) testSuites.get(testSuite);
if(tsc != null && plugIns.containsKey(test.getPlugIn().getName())){
tsc.getTests().put(test.getName(),test);
return true;
}
return false;
}
public boolean addTestSuite(TestSuiteConfig testSuite){
Iterator i = testSuite.getTests().keySet().iterator();
while(i.hasNext()){
TestConfig test = (TestConfig)testSuite.getTests().get(i.next());
if(!plugIns.containsKey(test.getPlugIn().getName()))
return false;
}
// plug ins all exist
testSuites.put(testSuite.getName(), testSuite);
return true;
}
public Object removeTestSuite(String name){
return testSuites.remove(name);
}
public Object removePlugIn(String name){
return plugIns.remove(name);
}
public Object removeTest(String testSuite,String name){
return ((TestSuiteConfig)testSuites.get(testSuite)).getTests().remove(name);
}
/**
* toDTO purpose.
* <p>
* Creates a representation as DTOs
* </p>
* @param plugIns List an empty list to store the resulting plugInDTOs
* @param testSuites List an empty list to store the resulting TestSuiteDTOs
* @return true if the lists contain the data, false otherwise.
*/
public boolean toDTO(Map plugIns, Map testSuites){
if(plugIns == null || testSuites == null)
return false;
if(plugIns.size() != 0 || testSuites.size() != 0)
return false;
// list are empty, and exist.
Iterator i = null;
i = this.plugIns.keySet().iterator();
while(i.hasNext()){
PlugInDTO dto = ((PlugInConfig)this.plugIns.get(i.next())).toDTO();
plugIns.put(dto.getName(),dto);
}
i = this.testSuites.keySet().iterator();
while(i.hasNext()){
TestSuiteDTO dto = ((TestSuiteConfig)this.testSuites.get(i.next())).toDTO(plugIns);
testSuites.put(dto.getName(),dto);
}
return true;
}
/**
* Access plugIns property.
*
* @return Returns the plugIns.
*/
public Map getPlugIns() {
return plugIns;
}
/**
* Access plugIns property.
*
* @return Returns the plugIns.
*/
public Set getPlugInNames() {
return plugIns.keySet();
}
/**
* Set plugIns to plugIns.
*
* @param plugIns The plugIns to set.
*/
public void setPlugIns(Map plugIns) {
this.plugIns = plugIns;
}
/**
* Access testSuites property.
*
* @return Returns the testSuites.
*/
public Map getTestSuites() {
return testSuites;
}
/**
* Access testSuites property.
*
* @return Returns the testSuites.
*/
public Set getTestSuiteNames() {
return testSuites.keySet();
}
/**
* Set testSuites to testSuites.
*
* @param testSuites The testSuites to set.
*/
public void setTestSuites(Map testSuites) {
this.testSuites = testSuites;
}
}