/*
* Copyright 2011 JBoss Inc
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.drools.semantics.builder.model;
import org.drools.semantics.util.SemanticWorkingSetConfigData;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class WorkingSetModelImpl extends ModelImpl implements WorkingSetModel {
private SemanticWorkingSetConfigData root;
// private Set<String> factz;
public WorkingSetModelImpl() {
root = new SemanticWorkingSetConfigData();
root.setName( "Thing" );
root.setDescription( " Classes : " );
root.setValidFacts( new String[] { "Thing" } );
// factz = new HashSet<String>();
}
public SemanticWorkingSetConfigData getWorkingSet() {
return root;
}
public void addTrait(String name, Object trait) {
// if ( ! factz.contains( name ) ) {
// factz.add( name );
//
// String[] facts = root.getValidFacts();
// String[] newFacts = new String[facts.length+1];
// System.arraycopy(facts, 0, newFacts, 0, facts.length);
// newFacts[ facts.length ] = name;
// root.setValidFacts( newFacts );
//
// }
}
public Object getTrait(String name) {
return getTrait( name, root );
}
private Object getTrait(String name, SemanticWorkingSetConfigData root) {
if ( root.getName().equals(name) ) {
return root;
} else {
if ( root.getWorkingSets().length > 0 ) {
for ( int j = 0; j < root.getWorkingSets().length; j++ ) {
if ( getTrait( name, root.getWorkingSets()[j]) != null ) {
return root.getWorkingSets()[j];
}
}
return null;
} else {
return null;
}
}
}
public Set<String> getTraitNames() {
List<String> list = Arrays.asList( root.validFacts );
Set<String> set = new HashSet<String>();
set.addAll( list );
return set;
}
@Override
protected String traitsToString() {
return Arrays.asList( root.validFacts ).toString();
}
}