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
;
}
}