Subversion Repositories bacoAlunos

Compare Revisions

Ignore whitespace Rev 296 → Rev 297

/impl/src/java/jomm/utils/StreamsUtils.java
37,6 → 37,7
 
public static void inputStream2File(InputStream stream, File f) throws IOException
{
f.getParentFile().mkdirs();
FileOutputStream out = new FileOutputStream(f);
inputStream2OutputStream(stream,out);
}
/impl/src/java/pt/estgp/estgweb/services/blogs/CreateBlogService.java
2,6 → 2,7
 
import pt.utl.ist.berserk.logic.serviceManager.IService;
import pt.estgp.estgweb.services.expceptions.ServiceException;
import pt.estgp.estgweb.services.data.ImageManager;
import pt.estgp.estgweb.domain.*;
import pt.estgp.estgweb.domain.views.BlogView;
import pt.estgp.estgweb.domain.dao.DaoFactory;
36,6 → 37,11
Blog b;
if(bV.getId() <= 0)
{
if(bV.getImage() != null)
{
DaoFactory.getImageDaoImpl().save(bV.getImage());
ImageManager.store((ImageImpl) bV.getImage());
}
if(bV.getCourseUnitView() != null)
{
CourseUnit c = DaoFactory.getCourseUnitDaoImpl().get(bV.getCourseUnitView().getId());
58,6 → 64,15
else
{
b = DaoFactory.getBlogDaoImpl().get(bV.getSerializable());
 
if(bV.getImage() != null && b.getImage() != null)
DaoFactory.getImageDaoImpl().delete(b.getImage().getId());
if(bV.getImage() != null)
{
DaoFactory.getImageDaoImpl().save(bV.getImage());
ImageManager.store((ImageImpl) bV.getImage());
b.setImage(bV.getImage());
}
}
if(userSession.getUser() != null && userSession.getUser().isSuperuserOrAdmin())
bV.persistViewInObjectByAdmin(b);
/impl/src/java/pt/estgp/estgweb/services/blogs/CreateBlogPostService.java
3,10 → 3,7
import pt.utl.ist.berserk.logic.serviceManager.IService;
import pt.estgp.estgweb.domain.views.BlogView;
import pt.estgp.estgweb.domain.views.BlogPostView;
import pt.estgp.estgweb.domain.Blog;
import pt.estgp.estgweb.domain.UserSession;
import pt.estgp.estgweb.domain.DomainObjectFactory;
import pt.estgp.estgweb.domain.BlogPostImpl;
import pt.estgp.estgweb.domain.*;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.services.expceptions.ServiceException;
import pt.estgp.estgweb.services.data.ImageManager;
54,13 → 51,9
DaoFactory.getImageDaoImpl().delete(bP.getImage().getId());
}
if(bPV.getImage() != null)
{
byte[] bytes = bPV.getImage().getImage();
bPV.getImage().setImage(null);
{
DaoFactory.getImageDaoImpl().save(bPV.getImage());
bPV.getImage().setImage(bytes);
ImageManager.store(bPV.getImage());
bPV.getImage().setImage(null);
ImageManager.store((ImageImpl) bPV.getImage());
}
 
 
/impl/src/java/pt/estgp/estgweb/services/data/ResourceManager.java
5,6 → 5,7
import java.io.*;
 
import jomm.utils.StreamsUtils;
import org.apache.log4j.Logger;
 
/**
* @author Jorge Machado
14,15 → 15,48
public class ResourceManager
{
 
public static final int DOCS_IN_PATH = 1000;
public static final int DOCS_FIRST_DIR_LEN = 20;
 
public static void saveResource(InputStream stream, String resourcePath, long id) throws IOException
{
StreamsUtils.inputStream2File(stream,new File(Globals.DATA_DIR + resourcePath + "/" + id));
StreamsUtils.inputStream2File(stream, new File(Globals.DATA_DIR + resourcePath + getDocumentPathById(id)));
}
 
public static InputStream getResource(String resourcePath,long id) throws FileNotFoundException
public static InputStream getResource(String resourcePath, long id) throws FileNotFoundException
{
return new FileInputStream(Globals.DATA_DIR + resourcePath + "/" + id);
return new FileInputStream(Globals.DATA_DIR + resourcePath + getDocumentPathById(id));
}
 
public static void setAllChars(char c, char[] dir)
{
for (int i = 0; i < dir.length; i++)
{
dir[i] = c;
}
}
 
public static void copyCharsToArray(char[] dir, String str)
{
int dirLen = dir.length;
int strLen = str.length();
 
for (int i = 0; i < strLen; i++)
{
dir[dirLen - i - 1] = str.charAt(strLen - i - 1);
}
}
 
public static String getDocumentPathById(long id)
{
char[] dir = new char[DOCS_FIRST_DIR_LEN];
setAllChars('0', dir);
long dirNumber = id / DOCS_IN_PATH;
dirNumber = dirNumber * DOCS_IN_PATH;
String dirNumberStr = "" + dirNumber;
copyCharsToArray(dir, dirNumberStr);
dirNumberStr = new String(dir);
return "/" + dirNumberStr + "/" + id;
}
 
}
/impl/src/java/pt/estgp/estgweb/services/data/ImageManager.java
1,6 → 1,7
package pt.estgp.estgweb.services.data;
 
import pt.estgp.estgweb.domain.Image;
import pt.estgp.estgweb.domain.ImageImpl;
 
import java.io.ByteArrayInputStream;
import java.io.IOException;
19,10 → 20,12
 
private static final Logger logger = Logger.getLogger(ImageManager.class);
 
public static boolean store(Image img)
public static boolean store(ImageImpl img)
{
try
{
if(img.getId() <= 0)
logger.error("Image arrive with out identifier: save it first");
ResourceManager.saveResource(new ByteArrayInputStream(img.getImage()), IMAGES_RESOURCE_PATH, img.getId());
return true;
}
/impl/src/java/pt/estgp/estgweb/services/announcements/CreateAnnouncementService.java
6,6 → 6,7
import pt.estgp.estgweb.services.jobs.JobScheduleService;
import pt.estgp.estgweb.services.email.EMAILJob;
import pt.estgp.estgweb.services.email.SendEmailService;
import pt.estgp.estgweb.services.data.ImageManager;
import pt.estgp.estgweb.domain.*;
import pt.estgp.estgweb.domain.enums.LangEnum;
import pt.estgp.estgweb.domain.dao.DaoFactory;
49,6 → 50,19
announcementView.persistViewInObject(a);
a.setOwner(userSession.getUser());
a.setSaveDate(new Date());
 
if(imageBig != null)
{
DaoFactory.getImageDaoImpl().save(imageBig);
ImageManager.store((ImageImpl) imageBig);
((ImageImpl)imageBig).setImage(null);
}
if(imageSmall != null)
{
DaoFactory.getImageDaoImpl().save(imageSmall);
ImageManager.store((ImageImpl) imageSmall);
((ImageImpl)imageSmall).setImage(null);
}
a.setBigImage(imageBig);
a.setSmallImage(imageSmall);
if(a.getTargetRoles() == null || a.getTargetRoles().length() == 0)
56,18 → 70,23
}
else
{
a= DaoFactory.getAnnouncementDaoImpl().get(announcementView.getSerializable());
a = DaoFactory.getAnnouncementDaoImpl().get(announcementView.getSerializable());
 
if(imageBig != null)
{
try
if(a.getBigImage() != null)
{
DaoFactory.getImageDaoImpl().delete(a.getBigImage().getId());
// try
// {
DaoFactory.getImageDaoImpl().delete(a.getBigImage().getId());
// }
// catch(Exception e)
// {
// logger.info("Announcement:" + announcementView.getId() + "do not have imageBig!");
// }
}
catch(Exception e)
{
logger.info("Announcement:" + announcementView.getId() + "do not have imageBig!");
}
DaoFactory.getImageDaoImpl().save(imageBig);
ImageManager.store((ImageImpl) imageBig);
announcementView.setBigImage(imageBig);
}
else
79,20 → 98,25
}
catch(Exception e)
{
logger.info("ImageBig form announcement:" + announcementView.getId() + "do not exist!");
logger.debug("ImageBig form announcement:" + announcementView.getId() + "do not exist!");
}
}
 
if(imageSmall!=null)
{
try
if(a.getSmallImage() != null)
{
// try
// {
DaoFactory.getImageDaoImpl().delete(a.getSmallImage().getId());
// }
// catch(Exception e)
// {
// logger.info("Announcement:" + announcementView.getId() + "do not have smallBig!");
// }
}
catch(Exception e)
{
logger.info("Announcement:" + announcementView.getId() + "do not have smallBig!");
}
DaoFactory.getImageDaoImpl().save(imageSmall);
ImageManager.store((ImageImpl) imageSmall);
announcementView.setSmallImage(imageSmall);
}
else
/impl/src/java/pt/estgp/estgweb/domain/ImageImpl.java
10,9 → 10,22
*/
public class ImageImpl extends Image
{
public Serializable getSerializable()
 
private byte[] image;
 
public Serializable getSerializable()
{
return getId();
}
 
 
public byte[] getImage()
{
return image;
}
 
public void setImage(byte[] image)
{
this.image = image;
}
}
/impl/src/java/pt/estgp/estgweb/web/utils/DomainUtils.java
2,6 → 2,7
 
import pt.estgp.estgweb.domain.Image;
import pt.estgp.estgweb.domain.DomainObjectFactory;
import pt.estgp.estgweb.domain.ImageImpl;
import org.apache.struts.upload.FormFile;
import org.apache.log4j.Logger;
import jomm.utils.StreamsUtils;
30,7 → 31,7
logger.error(e,e);
return null;
}
Image i = DomainObjectFactory.createImageImpl();
ImageImpl i = DomainObjectFactory.createImageImpl();
i.setImage(bytes);
i.setContentType(image.getContentType());
i.setSize(image.getFileSize());
/impl/src/java/pt/estgp/estgweb/web/ImageStream.java
1,7 → 1,9
package pt.estgp.estgweb.web;
 
import pt.estgp.estgweb.domain.Image;
import pt.estgp.estgweb.domain.ImageImpl;
import pt.estgp.estgweb.domain.dao.impl.ImageDaoImpl;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.services.data.ImageManager;
 
import java.io.*;
33,7 → 35,7
 
long id = Long.parseLong(imageRequarired.trim());
AbstractDao.getCurrentSession().beginTransaction();
Image image = new ImageDaoImpl().get(id);
ImageImpl image = (ImageImpl) DaoFactory.getImageDaoImpl().get(id);
try
{
response.setContentType(image.getContentType());
/impl/src/hbm/pt/estgp/estgweb/domain/GenericUser.hbm.xml
16,6 → 16,7
<property name="superuser" type="boolean"/>
<property name="name" type="string" index="nameIndex"/>
<property name="roles" type="string" index="rolesIndex"/>
<many-to-one name="image" column="image" class="pt.estgp.estgweb.domain.Image" lazy="no-proxy" outer-join="false" cascade="all"/>
<subclass name="pt.estgp.estgweb.domain.GenericUserImpl">
<subclass name="pt.estgp.estgweb.domain.Group">
<meta attribute="scope-class">public abstract</meta>
97,7 → 98,7
<property name="unitCheck" type="boolean"/>
<property name="academicDegree" type="string"/>
<property name="localRemovedTeachedUnits" type="string"/>
<set name="teachedunits" lazy="true" order-by="courseUnitId" table="teachedunits">
<set name="teachedUnits" lazy="true" order-by="courseUnitId" table="teachedunits">
<key column="teacherId"/>
<many-to-many class="pt.estgp.estgweb.domain.CourseUnit" column="courseUnitId"/>
</set>
/impl/src/hbm/pt/estgp/estgweb/domain/Image.hbm.xml
17,7 → 17,6
<property name="contentType" type="string"/>
<property name="size" type="int"/>
<property name="description" type="text"/>
<property name="image" type="binary" length="4194304"/>
<subclass name="pt.estgp.estgweb.domain.ImageImpl" discriminator-value="ImageImpl"/>
</class>
</hibernate-mapping>