Subversion Repositories bacoAlunos

Rev

Rev 203 | Blame | Compare with Previous | Last modification | View Log | RSS feed

package pt.estgp.estgweb.services.data;

import pt.utl.ist.berserk.logic.serviceManager.IService;
import pt.estgp.estgweb.domain.DomainObjectFactory;
import pt.estgp.estgweb.domain.RepositoryFileImpl;
import pt.estgp.estgweb.domain.RepositoryFileVersionImpl;
import pt.estgp.estgweb.domain.UserSession;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.filters.chains.ResourceAccessControlEnum;
import pt.estgp.estgweb.services.data.impl.DefaultRepositoryFile;

import java.io.InputStream;
import java.util.Date;
import java.util.HashSet;

/**
 * @author Jorge Machado
 * @date 4/Jun/2008
 * @see pt.estgp.estgweb.services.data
 */

public class RepositoryService implements IService
{

    /**
     *
     * @param stream
     * @param contentType
     * @param size
     * @param name
     * @param description
     * @return the identifier to retrieve the document
     */

    public 1.5.0/docs/api/java/lang/String.html">String storeRepositoryFile(5+0%2Fdocs%2Fapi+InputStream">InputStream stream, 1.5.0/docs/api/java/lang/String.html">String contentType, 1.5.0/docs/api/java/lang/String.html">String extension,int size, 1.5.0/docs/api/java/lang/String.html">String name, 1.5.0/docs/api/java/lang/String.html">String description, ResourceAccessControlEnum accessControl, UserSession userSession)
    {
        RepositoryFileImpl repositoryFile = DomainObjectFactory.createRepositoryFileImpl();
        repositoryFile.setSaveDate(new 5+0%2Fdocs%2Fapi+Date">Date());
        repositoryFile.setAccessControl(accessControl.getKey());
        repositoryFile.setOwner(userSession.getUser());
        DaoFactory.getRepositoryFileDaoImpl().save(repositoryFile);

        RepositoryFileVersionImpl repositoryFileVersion = createVersion(repositoryFile);
        repositoryFileVersion.setName(name);
        repositoryFileVersion.setSize(size);
        repositoryFileVersion.setDescription(description);
        repositoryFileVersion.setContentType(contentType);
        repositoryFileVersion.setExtension(extension);

        RepositoryManager.store(stream,repositoryFileVersion.getId());
        return new 1.5.0/docs/api/java/lang/StringBuilder.html">StringBuilder().append(repositoryFile.getId()).toString();
    }



     /**
     *
     * @param stream
     * @param contentType
     * @param size
     * @param name
     * @param description
     * @return the identifier to retrieve the document
     */

    public void updateRepositoryFile(1.5.0/docs/api/java/lang/String.html">String identifier, 5+0%2Fdocs%2Fapi+InputStream">InputStream stream, 1.5.0/docs/api/java/lang/String.html">String contentType, 1.5.0/docs/api/java/lang/String.html">String extension, int size, 1.5.0/docs/api/java/lang/String.html">String name, 1.5.0/docs/api/java/lang/String.html">String description, ResourceAccessControlEnum accessControl)
    {

        RepositoryFileImpl repositoryFile = (RepositoryFileImpl) DaoFactory.getRepositoryFileDaoImpl().get(1.5.0/docs/api/java/lang/Long.html">Long.parseLong(identifier));

        repositoryFile.setSaveDate(new 5+0%2Fdocs%2Fapi+Date">Date());
        repositoryFile.setAccessControl(accessControl.getKey());



        RepositoryFileVersionImpl repositoryFileVersion = createVersion(repositoryFile);
        repositoryFileVersion.setName(name);
        repositoryFileVersion.setSize(size);
        repositoryFileVersion.setDescription(description);
        repositoryFileVersion.setContentType(contentType);
        repositoryFileVersion.setExtension(extension);

        RepositoryManager.store(stream,repositoryFileVersion.getId());
    }

    /**
     *
     * @param identifier
     * @return a view of a document
     */

    public RepositoryFileImpl loadView(1.5.0/docs/api/java/lang/String.html">String identifier)
    {
        RepositoryFileImpl repositoryFile = (RepositoryFileImpl) DaoFactory.getRepositoryFileDaoImpl().get(1.5.0/docs/api/java/lang/Long.html">Long.parseLong(identifier));
        for(RepositoryFileVersionImpl version: repositoryFile.getRepositoryFileVersions())
        {
            version.getSaveDate();
        }
        return repositoryFile;
    }

    /**
     *
     * @param identifier
     * @return a view with an inputStream for document
     */

    public IRepositoryFile load(1.5.0/docs/api/java/lang/String.html">String identifier,UserSession userSession)
    {
        DefaultRepositoryFile iRepositoryFile = new DefaultRepositoryFile();
        RepositoryFileImpl repositoryFile = (RepositoryFileImpl) DaoFactory.getRepositoryFileDaoImpl().load(1.5.0/docs/api/java/lang/Long.html">Long.parseLong(identifier));
        iRepositoryFile.setContentType(repositoryFile.getLastVersion().getContentType());
        iRepositoryFile.setSize(repositoryFile.getLastVersion().getSize());
        iRepositoryFile.setName(repositoryFile.getLastVersion().getName());
        iRepositoryFile.setInput(RepositoryManager.load(repositoryFile.getLastVersion().getId()));
        return iRepositoryFile;
    }

    /**
     * Create a new File Version
     * @param repositoryFile
     * @return
     */

    private RepositoryFileVersionImpl createVersion(RepositoryFileImpl repositoryFile)
    {
        RepositoryFileVersionImpl repositoryFileVersion = DomainObjectFactory.createRepositoryFileVersionImpl();
        repositoryFileVersion.setRepositoryFile(repositoryFile);
        if(repositoryFile.getRepositoryFileVersions() == null)
            repositoryFile.setRepositoryFileVersions(new HashSet<RepositoryFileVersionImpl>());
        repositoryFile.getRepositoryFileVersions().add(repositoryFileVersion);
        repositoryFile.setLastVersion(repositoryFileVersion);
        DaoFactory.getRepositoryFileVersionDaoImpl().save(repositoryFileVersion);
        return repositoryFileVersion;
    }
}