/**
* Copyright (c)2010-2011 Enterprise Website Content Management System(EWCMS), All rights reserved.
* EWCMS PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
* http://www.ewcms.com
*/
package com.ewcms.plugin.report.manager.service;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ewcms.content.resource.model.Resource;
import com.ewcms.content.resource.service.ResourceServiceable;
import com.ewcms.core.site.model.Site;
import com.ewcms.plugin.report.manager.dao.RepositoryDAO;
import com.ewcms.plugin.report.model.Repository;
/**
*
* @author wu_zhijun
*
*/
@Service
public class RepositoryService implements RepositoryServiceable {
@Autowired
private RepositoryDAO repositoryDAO;
@Autowired
private ResourceServiceable resourceService;
@Override
public Long addRepository(Repository repository){
repositoryDAO.persist(repository);
return repository.getId();
}
@Override
public Long updRepository(Repository repository){
repositoryDAO.merge(repository);
return repository.getId();
}
@Override
public Repository findRepositoryById(Long repositoryId){
return repositoryDAO.get(repositoryId);
}
@Override
public void delRepository(Long repositoryId){
repositoryDAO.removeByPK(repositoryId);
}
@Override
public void publishRepository(List<Long> repositoryIds, Site site) {
for (Long repositoryId : repositoryIds) {
Repository repository = findRepositoryById(repositoryId);
String type = repository.getType();
byte[] bytes = repository.getEntity();
String outputFile = repository.getName() + "." + type;
Resource.Type resourceType = Resource.Type.ANNEX;
if (type.toLowerCase().equals("png")) {
resourceType = Resource.Type.IMAGE;
}
File file = null;
FileOutputStream fileStream = null;
BufferedOutputStream bufferStream = null;
try {
file = new File(outputFile);
fileStream = new FileOutputStream(file);
bufferStream = new BufferedOutputStream(fileStream);
bufferStream.write(bytes);
resourceService.upload(site, file, outputFile, resourceType);
repository.setPublishDate(new Date(Calendar.getInstance().getTime().getTime()));
repositoryDAO.merge(repository);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (fileStream != null) {
try {
fileStream.close();
} catch (IOException e) {
}
fileStream = null;
}
if (bufferStream != null) {
try {
bufferStream.close();
} catch (IOException e) {
}
bufferStream = null;
}
file = null;
}
}
}
}