/******************************************************************************* * Copyright 2012 University of Southern California * * 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. * * This code was developed by the Information Integration Group as part * of the Karma project at the Information Sciences Institute of the * University of Southern California. For more information, publications, * and related projects, please see: http://www.isi.edu/integration ******************************************************************************/ package edu.isi.karma.rep; import java.util.ArrayList; import java.util.Collection; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import edu.isi.karma.controller.command.CommandPreferences; import edu.isi.karma.controller.history.CommandHistory; import edu.isi.karma.modeling.alignment.AlignmentManager; import edu.isi.karma.modeling.ontology.OntologyManager; import edu.isi.karma.modeling.semantictypes.ISemanticTypeModelHandler; import edu.isi.karma.rep.metadata.TagsContainer; import edu.isi.karma.semantictypes.typinghandler.HybridSTModelHandler; import edu.isi.karma.semantictypes.typinghandler.LuceneBasedSTModelHandler; /** * Contains all the data to support a single instance of Karma, called a * workspace. * * @author szekely * */ public class Workspace extends Entity { private static final Logger logger = LoggerFactory.getLogger(Workspace.class); /** * Factory to create all the objects in this workspace */ private final RepFactory factory = new RepFactory(); /** * History of commands performed in this workspace. */ private CommandHistory commandHistory = new CommandHistory(); /** * Record all the worksheets defined in this workspace. */ private final Map<String, Worksheet> worksheets = new ConcurrentHashMap<>(); /** * Saves all the tagging information */ private final TagsContainer tagsContainer = new TagsContainer(); /** * Manages the model constructed from the imported ontologies */ private OntologyManager ontologyManager; /** * The CRF Model for the workspace */ private final ISemanticTypeModelHandler semTypeModelHandler; private final CommandPreferences commandPreferences; private final String commandPreferencesId; private final String contextId; /** * In the future we may need to keep track of user info. */ protected Workspace(String id, String contextId) { super(id); commandPreferences = new CommandPreferences(this.getId(), contextId); commandPreferencesId=this.getId(); this.contextId = contextId; this.semTypeModelHandler = new LuceneBasedSTModelHandler(contextId); } protected Workspace(String id, String cachedPreferencesId, String contextId) { super(id); this.commandPreferences = new CommandPreferences(cachedPreferencesId, contextId); this.commandPreferencesId = cachedPreferencesId; this.contextId = contextId; this.semTypeModelHandler = new HybridSTModelHandler(contextId); } public CommandHistory getCommandHistory() { if(commandHistory == null) { commandHistory = new CommandHistory(); } return commandHistory; } void addWorksheet(Worksheet worksheet) { worksheets.put(worksheet.getId(), worksheet); } public void removeWorksheet(String id) { factory.removeWorksheet(id, commandHistory); String alignmentId = AlignmentManager.Instance().constructAlignmentId( getId(), id); AlignmentManager.Instance().removeAlignment(alignmentId); this.commandHistory.removeWorksheetHistory(id); this.worksheets.remove(id); } public Worksheet getWorksheet(String id) { return worksheets.get(id); } public Collection<Worksheet> getWorksheets() { return new ArrayList<>(worksheets.values()); } public RepFactory getFactory() { return factory; } public TagsContainer getTagsContainer() { return tagsContainer; } public OntologyManager getOntologyManager() { if(ontologyManager == null) { ontologyManager = new OntologyManager(contextId); } return ontologyManager; } public ISemanticTypeModelHandler getSemanticTypeModelHandler() { return semTypeModelHandler; } public CommandPreferences getCommandPreferences() { return commandPreferences; } public String getCommandPreferencesId() { return commandPreferencesId; } public String getContextId() { return contextId; } }