/******************************************************************************* * Copyright (c) 2014 Open Door Logistics (www.opendoorlogistics.com) * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Lesser Public License v3 * which accompanies this distribution, and is available at http://www.gnu.org/licenses/lgpl.txt ******************************************************************************/ package com.opendoorlogistics.components.tables.creator; import java.io.Serializable; import java.util.ArrayList; import java.util.List; import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; import com.opendoorlogistics.api.tables.ODLDatastore; import com.opendoorlogistics.api.tables.ODLDatastoreAlterable; import com.opendoorlogistics.api.tables.ODLHasTables; import com.opendoorlogistics.api.tables.ODLTableAlterable; import com.opendoorlogistics.api.tables.ODLTableDefinition; import com.opendoorlogistics.core.scripts.elements.ScriptBaseElementImpl; import com.opendoorlogistics.core.tables.memory.ODLDatastoreImpl; import com.opendoorlogistics.core.tables.memory.ODLTableDefinitionImpl; import com.opendoorlogistics.core.tables.utils.DatastoreCopier; import com.opendoorlogistics.core.tables.utils.TableUtils; import com.opendoorlogistics.core.utils.strings.HasStringId; @XmlRootElement(name = "Tables") final public class DatastoreConfig extends ScriptBaseElementImpl implements Serializable, ODLHasTables<ODLTableDefinition>{ // private String id; private List<ODLTableDefinitionImpl> tables = new ArrayList<>(); public DatastoreConfig(){} // public DatastoreConfig(String id) { // this.id = id; // // } // @Override // public String getId() { // return id; // } // // @XmlAttribute // public void setId(String id) { // this.id = id; // } public ODLDatastore<? extends ODLTableDefinition> createDefinition() { ODLDatastoreAlterable<ODLTableAlterable> tmp = ODLDatastoreImpl.alterableFactory.create(); if(!DatastoreCopier.copyTableDefinitions(tables, tmp)){ return null; } return tmp; } public List<ODLTableDefinitionImpl> getTables() { return tables; } @XmlElement(name = "Table") public void setTables(List<ODLTableDefinitionImpl> tables) { this.tables = tables; } @Override public String getShortDescription() { StringBuilder ret = new StringBuilder(); ret.append("Datastore '" + "'"); if(getTables().size()>0){ ret.append(", tables "); for(int i =0 ; i < getTables().size(); i++){ if(i>0){ ret.append(", "); } ret.append("'" + getTables().get(i).getName() + "'"); } } return ret.toString(); } @Override public int getTableCount() { return tables.size(); } @Override public ODLTableDefinition getTableAt(int i) { return tables.get(i); } }