/*! ****************************************************************************** * * Pentaho Data Integration * * Copyright (C) 2002-2013 by Pentaho : http://www.pentaho.com * ******************************************************************************* * * 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.pentaho.di.starmodeler; import java.util.ArrayList; import java.util.Date; import java.util.List; import org.pentaho.di.core.Const; import org.pentaho.di.core.EngineMetaInterface; import org.pentaho.di.core.exception.KettleException; import org.pentaho.di.i18n.LanguageChoice; import org.pentaho.di.repository.ObjectId; import org.pentaho.di.repository.ObjectRevision; import org.pentaho.di.repository.RepositoryDirectoryInterface; import org.pentaho.di.repository.RepositoryObjectType; import org.pentaho.metadata.model.Domain; import org.pentaho.metadata.model.LogicalTable; import org.pentaho.metadata.model.concept.types.LocalizedString; import org.pentaho.metadata.util.SerializationService; public class StarDomain implements EngineMetaInterface { private Domain domain; private RepositoryDirectoryInterface repositoryDirectory; private String locale; private ObjectId objectId; private ObjectRevision objectRevision; private String filename; private boolean changed; private Date createdDate; private String createdUser; private Date modifiedDate; private String modifiedUser; private List<LogicalTable> sharedDimensions; public StarDomain() { this.domain = new Domain(); locale = LanguageChoice.getInstance().getDefaultLocale().toString(); changed=true; sharedDimensions = new ArrayList<LogicalTable>(); } @Override public void setRepositoryDirectory(RepositoryDirectoryInterface repositoryDirectory) { this.repositoryDirectory = repositoryDirectory; } @Override public void setName(String name) { domain.setName(new LocalizedString(locale, name)); } @Override public String getDescription() { return ConceptUtil.getDescription(domain, locale); } @Override public void setDescription(String description) { domain.setDescription(new LocalizedString(locale, description)); } @Override public ObjectId getObjectId() { return objectId; } @Override public RepositoryObjectType getRepositoryElementType() { return RepositoryObjectType.PLUGIN; } @Override public ObjectRevision getObjectRevision() { return objectRevision; } @Override public void setObjectRevision(ObjectRevision objectRevision) { this.objectRevision = objectRevision; } @Override public void setFilename(String filename) { this.filename = filename; } @Override public String getName() { return ConceptUtil.getName(domain, locale); } @Override public void nameFromFilename() { setName( Const.createName(filename) ); } @Override public void clearChanged() { changed=false; } @Override public String getXML() throws KettleException { return new SerializationService().serializeDomain(domain); } @Override public String getFileType() { return "star"; } @Override public String[] getFilterNames() { return new String[] { "Star models", }; } @Override public String[] getFilterExtensions() { return new String[] { "*.star", }; } @Override public String getDefaultExtension() { return "star"; } @Override public void setObjectId(ObjectId objectId) { this.objectId=objectId; } @Override public Date getCreatedDate() { return createdDate; } @Override public void setCreatedDate(Date createdDate) { this.createdDate = createdDate; } @Override public boolean canSave() { return true; // changed; } @Override public String getCreatedUser() { return createdUser; } @Override public void setCreatedUser(String createdUser) { this.createdUser = createdUser; } @Override public Date getModifiedDate() { return modifiedDate; } @Override public void setModifiedDate(Date modifiedDate) { this.modifiedDate = modifiedDate; } @Override public void setModifiedUser(String modifiedUser) { this.modifiedUser = modifiedUser; } @Override public String getModifiedUser() { return modifiedUser; } @Override public RepositoryDirectoryInterface getRepositoryDirectory() { return repositoryDirectory; } @Override public String getFilename() { return filename; } @Override public void saveSharedObjects() throws KettleException { // Nothing so far } @Override public void setInternalKettleVariables() { // Not applicable } /** * @return the domain */ public Domain getDomain() { return domain; } /** * @param domain the domain to set */ public void setDomain(Domain domain) { this.domain = domain; } public boolean hasChanged() { return changed; } public void setChanged(boolean changed) { this.changed = changed; } public List<LogicalTable> getSharedDimensions() { return sharedDimensions; } }