package pt.estgp.estgweb.services.courseunits;
import jomm.utils.FilesUtils;
import org.apache.log4j.Logger;
import pt.estgp.estgweb.domain.CourseUnit;
import pt.estgp.estgweb.domain.RepositoryFileImpl;
import pt.estgp.estgweb.domain.UserSession;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.domain.views.CourseUnitView;
import pt.estgp.estgweb.filters.chains.ResourceAccessControlEnum;
import pt.estgp.estgweb.services.data.RepositoryService;
import pt.estgp.estgweb.services.expceptions.ServiceException;
import pt.utl.ist.berserk.logic.serviceManager.IService;
import java.io.InputStream;
/*
* @author Goncalo Luiz gedl [AT] rnl [DOT] ist [DOT] utl [DOT] pt
*
*
* Created at 17/Out/2003 , 23:45:24
*
*/
/**
* @author Jorge Machado
*
*
* Created at 17/Out/2003 , 23:45:24
*
*/
public class UpdateCourseUnitService
implements IService
{
RepositoryService repositoryService =
new RepositoryService
();
LoadCourseUnitService loadCourseUnitService =
new LoadCourseUnitService
();
private static final 1.5.0/docs/api/java/util/logging/Logger.html">Logger logger =
1.5.0/docs/api/java/util/logging/Logger.html">Logger.
getLogger(UpdateCourseUnitService.
class);
public CourseUnitView run
(CourseUnitView courseUnitView,
5+0%2Fdocs%2Fapi+InputStream">InputStream stream,
1.5.0/docs/api/java/lang/String.html">String name,
int size,
1.5.0/docs/api/java/lang/String.html">String contentType,
UserSession userSession
)
throws ServiceException
{
CourseUnit c = DaoFactory.
getCourseUnitDaoImpl().
get(courseUnitView.
getId());
courseUnitView.
persistViewInObject(c
);
RepositoryFileImpl repositoryFile =
null;
if(stream
!=
null && size
> 0
)
{
1.5.0/docs/api/java/lang/String.html">String extension = FilesUtils.
getExtension(name
);
if(c.
getProgramStreamId() ==
null)
{
1.5.0/docs/api/java/lang/String.html">String identifier = repositoryService.
storeRepositoryFile(stream, contentType, extension, size, name,
"courseunit.program.description" + c.
getName(), ResourceAccessControlEnum.
publicDomain,userSession
);
c.
setProgramStreamId(identifier
);
}
else
{
repositoryService.
updateRepositoryFile(c.
getProgramStreamId(), stream, contentType, extension, size, name,
"courseunit.program.description " + c.
getName(), ResourceAccessControlEnum.
publicDomain);
}
}
if(c.
getProgramStreamId() !=
null)
{
repositoryFile = repositoryService.
loadView(c.
getProgramStreamId());
}
CourseUnitView cV =
new CourseUnitView
(c
);
if(repositoryFile
!=
null)
{
cV.
setProgramSize(repositoryFile.
getLastVersion().
getSize()/1024
);
cV.
setExtension(repositoryFile.
getLastVersion().
getExtension());
}
return loadCourseUnitService.
run(cV.
getId(),
true,
false,
false,userSession
);
}
public void delete
(long id,
UserSession userSession
)
throws ServiceException
{
CourseUnit c = DaoFactory.
getCourseUnitDaoImpl().
get(id
);
c.
setStatus(false);
}
}