// Path: src/org/openddr/simpleapi/oddr/cache/Cache.java
// public interface Cache {
// 
//     public Object getCachedElement(String id);
// 
//     public void setCachedElement(String id, Object object);
// 
//     public void clear();
// 
//     public int usedEntries();
// 
//     public Collection<Map.Entry> getAll();
// }
// 
// Path: src/org/openddr/simpleapi/oddr/cache/CacheImpl.java
// public class CacheImpl implements Cache {
// 
//     private static final float hashTableLoadFactor = 0.75f;
//     private LinkedHashMap map;
//     private int cacheSize;
// 
//     public CacheImpl() {
//         this.cacheSize = 100;
//         int hashTableCapacity = (int) Math.ceil(cacheSize / hashTableLoadFactor) + 1;
//         map = new LinkedHashMap(hashTableCapacity, hashTableLoadFactor, true) {
//             private static final long serialVersionUID = 1;
// 
//             @Override
//             protected boolean removeEldestEntry(Map.Entry eldest) {
//                 return size() > CacheImpl.this.cacheSize;
//             }
//         };
//     }
// 
//     public synchronized Object getCachedElement(String id) {
//         return map.get(id);
//     }
// 
//     public synchronized void setCachedElement(String id, Object object) {
//         map.put(id, object);
//     }
// 
//     public synchronized void clear() {
//         map.clear();
//     }
// 
//     public synchronized int usedEntries() {
//         return map.size();
//     }
// 
//     public synchronized Collection<Map.Entry> getAll() {
//         return new ArrayList<Map.Entry>(map.entrySet());
//     }
// }
// 
// Path: src/org/openddr/simpleapi/oddr/model/vocabulary/Vocabulary.java
// public class Vocabulary {
// 
//     private String[] aspects = null;
//     private Map<String, VocabularyProperty> properties = null;
//     private Map<String, VocabularyVariable> vocabularyVariables = null;
//     private String vocabularyIRI = null;
// 
//     public String[] getAspects() {
//         return aspects;
//     }
// 
//     public void setAspects(String[] aspects) {
//         this.aspects = aspects;
//     }
// 
//     public Map<String, VocabularyProperty> getProperties() {
//         return properties;
//     }
// 
//     public void setProperties(Map<String, VocabularyProperty> properties) {
//         this.properties = properties;
//     }
// 
//     public Map<String, VocabularyVariable> getVocabularyVariables() {
//         return vocabularyVariables;
//     }
// 
//     public void setVocabularyVariables(Map<String, VocabularyVariable> vocabularyVariables) {
//         this.vocabularyVariables = vocabularyVariables;
//     }
// 
//     public String getVocabularyIRI() {
//         return vocabularyIRI;
//     }
// 
//     public void setVocabularyIRI(String vocabularyIRI) {
//         this.vocabularyIRI = vocabularyIRI;
//     }
// }
// 
// Path: src/org/openddr/simpleapi/oddr/model/vocabulary/VocabularyProperty.java
// public class VocabularyProperty {
// 
//     private String[] aspects = null;
//     private String defaultAspect = null;
//     private String expr = null;
//     private String name = null;
//     private String type = null;
// 
//     public String[] getAspects() {
//         return aspects;
//     }
// 
//     public void setAspects(String[] aspects) {
//         this.aspects = aspects;
//     }
// 
//     public String getDefaultAspect() {
//         return defaultAspect;
//     }
// 
//     public void setDefaultAspect(String defaultAspect) {
//         this.defaultAspect = defaultAspect;
//     }
// 
//     public String getExpr() {
//         return expr;
//     }
// 
//     public void setExpr(String expr) {
//         this.expr = expr;
//     }
// 
//     public String getName() {
//         return name;
//     }
// 
//     public void setName(String name) {
//         this.name = name;
//     }
// 
//     public String getType() {
//         return type;
//     }
// 
//     public void setType(String type) {
//         this.type = type;
//     }
// }


import java.util.Map;
import org.apache.commons.lang.ArrayUtils;
import org.openddr.simpleapi.oddr.cache.Cache;
import org.openddr.simpleapi.oddr.cache.CacheImpl;
import org.openddr.simpleapi.oddr.model.vocabulary.Vocabulary;
import org.openddr.simpleapi.oddr.model.vocabulary.VocabularyProperty;
import org.w3c.ddr.simple.exception.NameException;
/**
 * Copyright 2011 OpenDDR LLC
 * This software is distributed under the terms of the GNU Lesser General Public License.
 *
 *
 * This file is part of OpenDDR Simple APIs.
 * OpenDDR Simple APIs is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation, version 3 of the License.
 *
 * OpenDDR Simple APIs is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *
 * GNU Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with Simple APIs.  If not, see <http://www.gnu.org/licenses/>.
 *
 */
package org.openddr.simpleapi.oddr.vocabulary;


public class VocabularyHolder {

    private Map<String, Vocabulary> vocabularies = null;
// Path: src/org/openddr/simpleapi/oddr/cache/Cache.java
// public interface Cache {
// 
//     public Object getCachedElement(String id);
// 
//     public void setCachedElement(String id, Object object);
// 
//     public void clear();
// 
//     public int usedEntries();
// 
//     public Collection<Map.Entry> getAll();
// }
// 
// Path: src/org/openddr/simpleapi/oddr/cache/CacheImpl.java
// public class CacheImpl implements Cache {
// 
//     private static final float hashTableLoadFactor = 0.75f;
//     private LinkedHashMap map;
//     private int cacheSize;
// 
//     public CacheImpl() {
//         this.cacheSize = 100;
//         int hashTableCapacity = (int) Math.ceil(cacheSize / hashTableLoadFactor) + 1;
//         map = new LinkedHashMap(hashTableCapacity, hashTableLoadFactor, true) {
//             private static final long serialVersionUID = 1;
// 
//             @Override
//             protected boolean removeEldestEntry(Map.Entry eldest) {
//                 return size() > CacheImpl.this.cacheSize;
//             }
//         };
//     }
// 
//     public synchronized Object getCachedElement(String id) {
//         return map.get(id);
//     }
// 
//     public synchronized void setCachedElement(String id, Object object) {
//         map.put(id, object);
//     }
// 
//     public synchronized void clear() {
//         map.clear();
//     }
// 
//     public synchronized int usedEntries() {
//         return map.size();
//     }
// 
//     public synchronized Collection<Map.Entry> getAll() {
//         return new ArrayList<Map.Entry>(map.entrySet());
//     }
// }
// 
// Path: src/org/openddr/simpleapi/oddr/model/vocabulary/Vocabulary.java
// public class Vocabulary {
// 
//     private String[] aspects = null;
//     private Map<String, VocabularyProperty> properties = null;
//     private Map<String, VocabularyVariable> vocabularyVariables = null;
//     private String vocabularyIRI = null;
// 
//     public String[] getAspects() {
//         return aspects;
//     }
// 
//     public void setAspects(String[] aspects) {
//         this.aspects = aspects;
//     }
// 
//     public Map<String, VocabularyProperty> getProperties() {
//         return properties;
//     }
// 
//     public void setProperties(Map<String, VocabularyProperty> properties) {
//         this.properties = properties;
//     }
// 
//     public Map<String, VocabularyVariable> getVocabularyVariables() {
//         return vocabularyVariables;
//     }
// 
//     public void setVocabularyVariables(Map<String, VocabularyVariable> vocabularyVariables) {
//         this.vocabularyVariables = vocabularyVariables;
//     }
// 
//     public String getVocabularyIRI() {
//         return vocabularyIRI;
//     }
// 
//     public void setVocabularyIRI(String vocabularyIRI) {
//         this.vocabularyIRI = vocabularyIRI;
//     }
// }
// 
// Path: src/org/openddr/simpleapi/oddr/model/vocabulary/VocabularyProperty.java
// public class VocabularyProperty {
// 
//     private String[] aspects = null;
//     private String defaultAspect = null;
//     private String expr = null;
//     private String name = null;
//     private String type = null;
// 
//     public String[] getAspects() {
//         return aspects;
//     }
// 
//     public void setAspects(String[] aspects) {
//         this.aspects = aspects;
//     }
// 
//     public String getDefaultAspect() {
//         return defaultAspect;
//     }
// 
//     public void setDefaultAspect(String defaultAspect) {
//         this.defaultAspect = defaultAspect;
//     }
// 
//     public String getExpr() {
//         return expr;
//     }
// 
//     public void setExpr(String expr) {
//         this.expr = expr;
//     }
// 
//     public String getName() {
//         return name;
//     }
// 
//     public void setName(String name) {
//         this.name = name;
//     }
// 
//     public String getType() {
//         return type;
//     }
// 
//     public void setType(String type) {
//         this.type = type;
//     }
// }


// Path: src/org/openddr/simpleapi/oddr/vocabulary/VocabularyHolder.java
import java.util.Map;
import org.apache.commons.lang.ArrayUtils;
import org.openddr.simpleapi.oddr.cache.Cache;
import org.openddr.simpleapi.oddr.cache.CacheImpl;
import org.openddr.simpleapi.oddr.model.vocabulary.Vocabulary;
import org.openddr.simpleapi.oddr.model.vocabulary.VocabularyProperty;
import org.w3c.ddr.simple.exception.NameException;

/**
 * Copyright 2011 OpenDDR LLC
 * This software is distributed under the terms of the GNU Lesser General Public License.
 *
 *
 * This file is part of OpenDDR Simple APIs.
 * OpenDDR Simple APIs is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation, version 3 of the License.
 *
 * OpenDDR Simple APIs is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *
 * GNU Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with Simple APIs.  If not, see <http://www.gnu.org/licenses/>.
 *
 */
package org.openddr.simpleapi.oddr.vocabulary;


public class VocabularyHolder {

    private Map<String, Vocabulary> vocabularies = null;
    private Cache vocabularyPropertyCache = new CacheImpl();