// ============================================================================
//
// Copyright (C) 2006-2012 Talend Inc. - www.talend.com
//
// This source code is available under agreement available at
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
//
// You should have received a copy of the agreement
// along with this program; if not, write to Talend SA
// 9 rue Pages 92150 Suresnes, France
//
// ============================================================================
package org.talend.repository.model;
import java.beans.PropertyChangeListener;
import java.util.List;
import org.eclipse.core.runtime.IPath;
import org.talend.commons.exception.BusinessException;
import org.talend.commons.exception.LoginException;
import org.talend.commons.exception.PersistenceException;
import org.talend.commons.utils.data.container.RootContainer;
import org.talend.core.context.RepositoryContext;
import org.talend.core.model.general.ModuleNeeded;
import org.talend.core.model.general.Project;
import org.talend.core.model.metadata.builder.connection.MetadataTable;
import org.talend.core.model.properties.ConnectionItem;
import org.talend.core.model.properties.ContextItem;
import org.talend.core.model.properties.FolderItem;
import org.talend.core.model.properties.InformationLevel;
import org.talend.core.model.properties.Item;
import org.talend.core.model.properties.Property;
import org.talend.core.model.properties.SpagoBiServer;
import org.talend.core.model.properties.Status;
import org.talend.core.model.repository.ERepositoryObjectType;
import org.talend.core.model.repository.Folder;
import org.talend.core.model.repository.IRepositoryViewObject;
import org.talend.core.model.repository.IRepositoryWorkUnitListener;
import org.talend.core.model.repository.LockInfo;
import org.talend.repository.RepositoryWorkUnit;
/**
* DOC qian class global comment. Repository factory use by client. Based on implementation provide by extension point
* system. This class contains all commons treatments done by repository whatever implementation. <br/>
*
* $Id: talend-code-templates.xml 1 2006-09-29 17:06:40 +0000 (星期五, 29 九月 2006) nrousseau $
*
*/
public interface IProxyRepositoryFactory {
public static final String BRANCH_SELECTION = "branchSelection";
public abstract RepositoryContext getRepositoryContext();
public void refreshJobPictureFolder(String picFolder);
public void refreshDocumentationFolder(String docFolder);
public void addPropertyChangeListener(PropertyChangeListener l);
public void removePropertyChangeListener(PropertyChangeListener l);
/**
* @param project
* @return
* @throws PersistenceException
* @see org.talend.repository.model.IMetadataFactory#getMetadataConnections(org.talend.core.model.general.Project)
*/
public abstract List<ConnectionItem> getMetadataConnectionsItem() throws PersistenceException;
public abstract List<ContextItem> getContextItem() throws PersistenceException;
/*
* (non-Javadoc)
*
* @see org.talend.repository.model.IRepositoryFactory#isValid(org.talend.core .model.general.Project,
* org.talend.core.model.repository.ERepositoryObjectType, org.eclipse.core.runtime.IPath, java.lang.String)
*/
public abstract boolean isNameAvailable(Item item, String name, List<IRepositoryViewObject>... givenList)
throws PersistenceException;
public abstract boolean isNameAvailable(Project project, Item item, String name, List<IRepositoryViewObject>... givenList)
throws PersistenceException;
public abstract boolean isPathValid(ERepositoryObjectType type, IPath path, String label) throws PersistenceException;
public abstract boolean isPathValid(Project proejct, ERepositoryObjectType type, IPath path, String label)
throws PersistenceException;
/**
* @param label
* @param description
* @param language
* @param author
* @return
* @throws PersistenceException
* @see org.talend.core.model.repository.factories.IRepositoryFactory#createProject(Project projectInfor)
*/
public abstract Project createProject(Project projectInfor) throws PersistenceException;
public abstract void saveProject(Project project) throws PersistenceException;
/**
* @param project
* @param type
* @param path
* @param label
* @throws PersistenceException
* @see org.talend.core.model.repository.factories.IRepositoryFactory#createFolder(org.talend.core.model.general.Project,
* org.talend.core.model.repository.ERepositoryObjectType, org.eclipse.core.runtime.IPath, java.lang.String)
*/
public abstract Folder createFolder(ERepositoryObjectType type, IPath path, String label) throws PersistenceException;
public abstract Folder createFolder(Project project, ERepositoryObjectType type, IPath path, String label)
throws PersistenceException;
public abstract Folder createFolder(Project project, ERepositoryObjectType type, IPath path, String label,
boolean isImportItem) throws PersistenceException;
/**
* @param project
* @param type
* @param path
* @throws PersistenceException
* @see org.talend.core.model.repository.factories.IRepositoryFactory#deleteFolder(org.talend.core.model.general.Project,
* org.talend.core.model.repository.ERepositoryObjectType, org.eclipse.core.runtime.IPath)
*/
public abstract void deleteFolder(ERepositoryObjectType type, IPath path) throws PersistenceException;
public abstract void deleteFolder(Project project, ERepositoryObjectType type, IPath path) throws PersistenceException;
public abstract void deleteFolder(Project project, ERepositoryObjectType type, IPath path, boolean fromEmptyRecycleBin)
throws PersistenceException;
/**
* @param project
* @param type
* @param sourcePath
* @param targetPath
* @throws PersistenceException
* @see org.talend.core.model.repository.factories.IRepositoryFactory#moveFolder(org.talend.core.model.general.Project,
* org.talend.core.model.repository.ERepositoryObjectType, org.eclipse.core.runtime.IPath,
* org.eclipse.core.runtime.IPath)
*/
public abstract void moveFolder(ERepositoryObjectType type, IPath sourcePath, IPath targetPath) throws PersistenceException;
/**
* @param project
* @return
* @throws PersistenceException
* @see org.talend.core.model.repository.factories.IBusinessProcessFactory#getBusinessProcess(org.talend.core.model.general.Project)
*/
public abstract String getNextId();
/**
* yzhang Comment method "getRecycleBinItems".
*
* @return
* @throws PersistenceException
*/
public abstract List<IRepositoryViewObject> getRecycleBinItems() throws PersistenceException;
public abstract List<IRepositoryViewObject> getRecycleBinItems(Project project, boolean... options)
throws PersistenceException;
/**
* @param server
* @param username
* @param password
* @return
* @throws PersistenceException
* @throws BusinessException
* @see org.talend.core.model.repository.factories.IRepositoryFactory#readProject(java.lang.String,
* java.lang.String, java.lang.String)
*/
// TODO SML Rename in getProjects
public abstract Project[] readProject() throws PersistenceException, BusinessException;
// for export project ,no need to unload resource when read projects
public abstract Project[] readProject(boolean unloadResource) throws PersistenceException, BusinessException;
/**
* @param project
* @param type
* @param path
* @param label
* @throws PersistenceException
* @see org.talend.core.model.repository.factories.IRepositoryFactory#renameFolder(org.talend.core.model.general.Project,
* org.talend.core.model.repository.ERepositoryObjectType, org.eclipse.core.runtime.IPath, java.lang.String)
*/
public abstract void renameFolder(ERepositoryObjectType type, IPath path, String label) throws PersistenceException;
/*
* (non-Javadoc)
*
* @see org.talend.repository.model.IRepositoryFactory#deleteObject(org.talend .core.model.general.Project,
* org.talend.core.model.repository.IRepositoryViewObject)
*/
public abstract void deleteObjectLogical(IRepositoryViewObject objToDelete) throws PersistenceException, BusinessException;
public abstract void deleteObjectLogical(Project project, IRepositoryViewObject objToDelete) throws PersistenceException,
BusinessException;
public abstract void deleteObjectPhysical(IRepositoryViewObject objToDelete) throws PersistenceException;
public abstract void deleteObjectPhysical(IRepositoryViewObject objToDelete, String version) throws PersistenceException;
public abstract void deleteObjectPhysical(Project project, IRepositoryViewObject objToDelete) throws PersistenceException,
BusinessException;
public abstract void deleteObjectPhysical(Project project, IRepositoryViewObject objToDelete, String version)
throws PersistenceException;
public abstract void deleteObjectPhysical(Project project, IRepositoryViewObject objToDelete, String version,
boolean fromEmptyRecycleBin) throws PersistenceException;
public abstract void restoreObject(IRepositoryViewObject objToRestore, IPath path) throws PersistenceException,
BusinessException;
/*
* (non-Javadoc)
*
* @see org.talend.repository.model.IRepositoryFactory#moveObject(org.talend. core.model.general.Project,
* org.talend.core.model.repository.IRepositoryViewObject)
*/
public abstract void moveObject(IRepositoryViewObject objToMove, IPath path, IPath... sourcePath)
throws PersistenceException, BusinessException;
public abstract void lock(IRepositoryViewObject obj) throws PersistenceException, BusinessException;
/**
* @param item
* @throws PersistenceException
* @throws BusinessException
* @see org.talend.repository.model.IRepositoryFactory#lock(org.talend.core.model.properties.Item)
*/
public abstract void lock(Item item) throws PersistenceException, LoginException;
/*
* (non-Javadoc)
*
* @see org.talend.repository.model.IRepositoryFactory#getAllVersion(org.talend .core.model.general.Project, int)
*/
public abstract List<IRepositoryViewObject> getAllVersion(Project project, String id, boolean avoidSaveProject)
throws PersistenceException;
public abstract List<IRepositoryViewObject> getAllVersion(String id) throws PersistenceException;
public abstract IRepositoryViewObject getLastVersion(Project project, String id, String relativeFolder,
ERepositoryObjectType type) throws PersistenceException;
public abstract IRepositoryViewObject getLastVersion(Project project, String id) throws PersistenceException;
public abstract IRepositoryViewObject getLastVersion(String id) throws PersistenceException;
public abstract IRepositoryViewObject getSpecificVersion(Project project, String id, String version, boolean avoidSaveProject)
throws PersistenceException;
public abstract IRepositoryViewObject getSpecificVersion(String id, String version, boolean avoidSaveProject)
throws PersistenceException;
public abstract List<IRepositoryViewObject> getAll(ERepositoryObjectType type) throws PersistenceException;
public abstract List<IRepositoryViewObject> getAll(ERepositoryObjectType type, boolean withDeleted)
throws PersistenceException;
public abstract List<IRepositoryViewObject> getAll(ERepositoryObjectType type, boolean withDeleted, boolean allVersions)
throws PersistenceException;
public abstract List<IRepositoryViewObject> getAll(Project project, ERepositoryObjectType type) throws PersistenceException;
public abstract List<IRepositoryViewObject> getAll(Project project, ERepositoryObjectType type, boolean withDeleted)
throws PersistenceException;
public abstract List<IRepositoryViewObject> getAll(Project project, ERepositoryObjectType type, boolean withDeleted,
boolean allVersions) throws PersistenceException;
public abstract List<String> getFolders(ERepositoryObjectType type) throws PersistenceException;
/**
* @return
* @see org.talend.repository.model.IRepositoryFactory#getDocumentationStatus()
*/
public abstract List<Status> getDocumentationStatus() throws PersistenceException;
/**
* @return
* @see org.talend.repository.model.IRepositoryFactory#getTechnicalStatus()
*/
public abstract List<Status> getTechnicalStatus() throws PersistenceException;
/**
* @return
* @see org.talend.repository.model.IRepositoryFactory#getSpagoBiServer()
*/
// TODO SML Remove
// public abstract List<SpagoBiServer> getSpagoBiServer() throws
// PersistenceException;
/**
* @param list
* @see org.talend.repository.model.IRepositoryFactory#setDocumentationStatus(java.util.List)
*/
public abstract void setDocumentationStatus(List<Status> list) throws PersistenceException;
/**
* @param list
* @see org.talend.repository.model.IRepositoryFactory#setTechnicalStatus(java.util.List)
*/
public abstract void setTechnicalStatus(List<Status> list) throws PersistenceException;
/**
* @param list
* @see org.talend.repository.model.IRepositoryFactory#setSpagoBiServer(java.util.List)
*/
public abstract void setSpagoBiServer(List<SpagoBiServer> list) throws PersistenceException;
public abstract void setMigrationTasksDone(Project project, List<String> list) throws PersistenceException;
/*
* (non-Javadoc)
*
* @see org.talend.repository.model.IRepositoryFactory#isServerValid()
*/
// public abstract String isServerValid();
public abstract void create(Item item, IPath path, boolean... isImportItem) throws PersistenceException;
public abstract void create(Project project, Item item, IPath path, boolean... isImportItem) throws PersistenceException;
public abstract void save(Item item, boolean... isMigrationTask) throws PersistenceException;
public abstract void save(Project project, Item item, boolean... isMigrationTask) throws PersistenceException;
public abstract void save(Property property, String... originalNameAndVersion) throws PersistenceException;
public abstract void save(Project project, Property property, String... originalNameAndVersion) throws PersistenceException;
public abstract Item copy(Item item, IPath path) throws PersistenceException, BusinessException;
public abstract Item copy(Item item, IPath path, boolean changeLabelWithCopyPrefix) throws PersistenceException,
BusinessException;
public abstract void saveCopy(Item item, Item targetItem) throws PersistenceException;
public abstract Property reload(Property property) throws PersistenceException;
/*
* (non-Javadoc)
*
* @see org.talend.repository.model.IRepositoryFactory#unlock(org.talend.core .model.general.Project,
* org.talend.core.model.repository.IRepositoryViewObject)
*/
public abstract void unlock(IRepositoryViewObject obj) throws PersistenceException, LoginException;
/**
* @param obj
* @throws PersistenceException
* @see org.talend.repository.model.IRepositoryFactory#unlock(org.talend.core.model.properties.Item)
*/
public abstract void unlock(Item item) throws PersistenceException, LoginException;
// public abstract boolean doesLoggedUserExist() throws
// PersistenceException;
// public abstract void createUser() throws PersistenceException;
public abstract void initialize() throws PersistenceException;
/*
* (non-Javadoc)
*
* @see org.talend.repository.model.IRepositoryFactory#getStatus(org.talend.core .model.properties.Item)
*/
public abstract ERepositoryStatus getStatus(IRepositoryViewObject obj);
public abstract ERepositoryStatus getStatus(Item item);
public abstract ERepositoryStatus getStatus(InformationLevel level);
/*
* (non-Javadoc)
*
* @see org.talend.repository.model.IRepositoryFactory#getStatusAndLockIfPossible
* (org.talend.core.model.properties.Item)
*/
public abstract boolean isEditableAndLockIfPossible(Item item);
/*
* (non-Javadoc)
*
* @see org.talend.repository.model.IRepositoryFactory#isEditable(org.talend.
* core.model.repository.IRepositoryViewObject)
*/
public abstract boolean isEditableAndLockIfPossible(IRepositoryViewObject obj);
public org.talend.core.model.properties.Project getProject(Item item);
/*
* (non-Javadoc)
*
*
* @seeorg.talend.repository.model.IRepositoryFactory#isPotentiallyEditable(org .talend.core.model.repository.
* IRepositoryViewObject)
*/
public abstract boolean isPotentiallyEditable(IRepositoryViewObject obj);
@Deprecated
public boolean isDeleted(MetadataTable table);
public boolean isUserReadOnlyOnCurrentProject();
public abstract List<org.talend.core.model.properties.Project> getReferencedProjects(Project project);
public Boolean hasChildren(Object parent);
public abstract RootContainer<String, IRepositoryViewObject> getMetadata(Project project, ERepositoryObjectType type,
boolean... options) throws PersistenceException;
public abstract RootContainer<String, IRepositoryViewObject> getMetadata(ERepositoryObjectType type)
throws PersistenceException;
public List<ModuleNeeded> getModulesNeededForJobs() throws PersistenceException;
public void forceCreate(Item item, IPath path) throws PersistenceException;
public void forceCreate(Project project, Item item, IPath path) throws PersistenceException;
public void createParentFoldersRecursively(ERepositoryObjectType itemType, IPath path) throws PersistenceException;
public void createParentFoldersRecursively(Project project, ERepositoryObjectType itemType, IPath path)
throws PersistenceException;
public void createParentFoldersRecursively(Project project, ERepositoryObjectType itemType, IPath path, boolean isImportItem)
throws PersistenceException;
public void forceDeleteObjectPhysical(IRepositoryViewObject objToDelete, String version) throws PersistenceException;
public Property getUptodateProperty(Project project, Property property) throws PersistenceException;
public Property getUptodateProperty(Property property) throws PersistenceException;
public void executeRepositoryWorkUnit(RepositoryWorkUnit workUnit);
/**
* Catch only the next repositoryWorkUnit operation, once workUnit is finished, listener is removed.
*
* @param listener
*/
public void addRepositoryWorkUnitListener(IRepositoryWorkUnitListener listener);
public List<IRepositoryViewObject> getAllVersion(String id, String folderPath, ERepositoryObjectType type)
throws PersistenceException;
public FolderItem getFolderItem(Project project, ERepositoryObjectType itemType, IPath path);
public boolean enableSandboxProject() throws PersistenceException;
public boolean isLocalConnectionProvider() throws PersistenceException;
/**
*
* DOC zshen Comment method "getMetadataByFolder".
*
* @param project
* @param itemType
* @param path
* @return all of object under path.
*/
public List<IRepositoryViewObject> getMetadataByFolder(Project project, ERepositoryObjectType itemType, IPath path);
public List<IRepositoryViewObject> getMetadataByFolder(ERepositoryObjectType itemType, IPath path);
public LockInfo getLockInfo(Item item);
/**
* DOC ycbai Comment method "getNavigatorViewDescription".
*
* @return
*/
public String getNavigatorViewDescription();
public void updateLockStatus() throws PersistenceException;
}