/*
This file belongs to the Servoy development and deployment environment, Copyright (C) 1997-2010 Servoy BV
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU Affero General Public License as published by the Free
Software Foundation; either version 3 of the License, or (at your option) any
later version.
This program 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 Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License along
with this program; if not, see http://www.gnu.org/licenses or write to the Free
Software Foundation,Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
*/
package com.servoy.j2db.persistence;
import java.rmi.RemoteException;
import java.util.Date;
import com.servoy.j2db.util.UUID;
/**
* @author jblok
*/
public interface ITeamRepository extends IRemoteRepository
{
/**
* Load an IRootObject
*
* @param name
* @param objectTypeId (SOLUTION/STYLE see IRepository)
* @param release (0 = active release)
* @return object implementing IRootObject such as style or solution
* @throws RepositoryException
*/
public IRootObject getRootObject(String name, int objectTypeId, int release) throws RepositoryException, RemoteException;
/**
* Save an IRootObject (all child's are checked for changed flag, if changed they are stored)
*
* @param rootObject style or solution
* @throws RepositoryException
*/
public void updateTeamRootObject(IRootObject rootObject) throws RepositoryException, RemoteException;
/**
* To be able to check if you are still talking with same repository as checkout did originate from
*
* @throws RepositoryException
* @throws RemoteException
*/
public UUID getRepositoryUUID() throws RepositoryException, RemoteException;
/**
* To be able to check if team operation can be performed on the remote repository version
*
* @throws RepositoryException
* @throws RemoteException
*/
public int getRepositoryVersion() throws RemoteException;
/**
* push a eclipse configured table to the server to be synced with the actual database (this will also change the servoy_columninfo)
*
* @param serverName synch table's server name
* @param tableName synch table name
* @param dm the table to be synced or null if it was removed
* @throws RepositoryException
* @throws RemoteException
*/
public void updateDataModel(String serverName, String tableName, Table dm) throws RepositoryException, RemoteException;
public void deleteStringResource(String name, int objectTypeId) throws RepositoryException, RemoteException;
public Date[] getRootObjectReleaseDates(int root_element_id) throws RemoteException, RepositoryException;
/**
* Get i18n tables binded to at least one solution
*
* @return all i18n tables binded to at least one solution
* @throws RemoteException
*/
public String[] getI18NDatasources() throws RemoteException, RepositoryException;
}