/impl/importRoutines.xml |
---|
New file |
0,0 → 1,19 |
<?xml version="1.0" encoding="UTF-8"?> |
<project name="estgweb-import" basedir="." default="help"> |
<import file="build.xml"/> |
<target name="courses"> |
<java classname="pt.estgp.estgweb.services.sigesimports.ImportCourseService" classpath="${build.dir.classes}" classpathref="pathToToolsLib"/> |
</target> |
<target name="teachers"> |
<java classname="pt.estgp.estgweb.services.sigesimports.ImportTeachersService" classpath="${build.dir.classes}" classpathref="pathToToolsLib"/> |
</target> |
<target name="students"> |
<java classname="pt.estgp.estgweb.services.sigesimports.ImportStudentsService" classpath="${build.dir.classes}" classpathref="pathToToolsLib"/> |
</target> |
</project> |
/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/doc/estgweb.eap |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/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> |
61,7 → 62,7 |
<key column="contributorId"/> |
<many-to-many class="pt.estgp.estgweb.domain.Record" column="recordId"/> |
</set> |
<set name="managedIdentifierCollectionsManager" lazy="true" table="managedIdentifierCollectionManagers"> |
<set name="managedIdentifierCollectionsManager" lazy="true" table="managedidentifiercollectionmanagers"> |
<key column="managerId"/> |
<many-to-many class="pt.estgp.estgweb.domain.ManagedIdentifierCollection" column="collectionId"/> |
</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> |
/impl/src/hbm/pt/estgp/estgweb/domain/CourseUnit.hbm.xml |
---|
31,7 → 31,7 |
<key column="courseUnit"/> |
<one-to-many class="pt.estgp.estgweb.domain.CourseUnitBlog" /> |
</set> |
<set name="teachers" lazy="true" table="teachedUnits"> |
<set name="teachers" lazy="true" table="teachedunits"> |
<key column="courseUnitId"/> |
<many-to-many class="pt.estgp.estgweb.domain.TeacherImpl" column="teacherId"/> |
</set> |
54,7 → 54,7 |
<subclass name="pt.estgp.estgweb.domain.CourseUnitImpl" discriminator-value="CourseUnitImpl"/> |
</class> |
<class name="pt.estgp.estgweb.domain.CourseUnitQuestion" table="courseUnitQuestion" abstract="true"> |
<class name="pt.estgp.estgweb.domain.CourseUnitQuestion" table="courseunitquestion" abstract="true"> |
<meta attribute="extends">pt.estgp.estgweb.domain.OwnedDomainObject</meta> |
<meta attribute="scope-class">public abstract</meta> |
<id name="id" type="long"> |
71,7 → 71,7 |
<subclass name="pt.estgp.estgweb.domain.CourseUnitQuestionImpl" discriminator-value="CourseUnitQuestionImpl"/> |
</class> |
<class name="pt.estgp.estgweb.domain.CourseUnitAssignement" table="courseUnitAssignement" abstract="true"> |
<class name="pt.estgp.estgweb.domain.CourseUnitAssignement" table="courseunitassignement" abstract="true"> |
<meta attribute="extends">pt.estgp.estgweb.domain.DomainSerializableObject</meta> |
<meta attribute="scope-class">public abstract</meta> |
<id name="id" type="long"> |
95,7 → 95,7 |
<subclass name="pt.estgp.estgweb.domain.CourseUnitAssignementImpl" discriminator-value="CourseUnitAssignementImpl"/> |
</class> |
<class name="pt.estgp.estgweb.domain.CourseUnitDeliverable" table="courseUnitDeliverable" abstract="true"> |
<class name="pt.estgp.estgweb.domain.CourseUnitDeliverable" table="courseunitdeliverable" abstract="true"> |
<meta attribute="extends">pt.estgp.estgweb.domain.DomainSerializableObject</meta> |
<meta attribute="scope-class">public abstract</meta> |
<id name="id" type="long"> |
113,7 → 113,7 |
<subclass name="pt.estgp.estgweb.domain.CourseUnitDeliverableImpl" discriminator-value="CourseUnitDeliverableImpl"/> |
</class> |
<class name="pt.estgp.estgweb.domain.CourseUnitGrade" table="courseUnitGrade" abstract="true"> |
<class name="pt.estgp.estgweb.domain.CourseUnitGrade" table="courseunitgrade" abstract="true"> |
<meta attribute="extends">pt.estgp.estgweb.domain.DomainSerializableObject</meta> |
<meta attribute="scope-class">public abstract</meta> |
<id name="id" type="long"> |
132,7 → 132,7 |
<subclass name="pt.estgp.estgweb.domain.CourseUnitGradeImpl" discriminator-value="CourseUnitGradeImpl"/> |
</class> |
<!--<class name="pt.estgp.estgweb.domain.CourseUnit" table="courseUnitAssignement" abstract="true">--> |
<!--<class name="pt.estgp.estgweb.domain.CourseUnit" table="courseunitassignement" abstract="true">--> |
<!--<meta attribute="extends">pt.estgp.estgweb.domain.DomainSerializableObject</meta>--> |
<!--<meta attribute="scope-class">public abstract</meta>--> |
<!--<id name="id" type="long">--> |
/impl/src/hbm/pt/estgp/estgweb/domain/IdentifiersManagement.hbm.xml |
---|
20,7 → 20,7 |
<subclass name="pt.estgp.estgweb.domain.ManagedIdentifierImpl" discriminator-value="ManagedIdentifierImpl"/> |
</class> |
<class name="pt.estgp.estgweb.domain.ManagedIdentifierCollection" table="managedIdentifierCollection" abstract="true"> |
<class name="pt.estgp.estgweb.domain.ManagedIdentifierCollection" table="managedidentifiercollection" abstract="true"> |
<meta attribute="extends">pt.estgp.estgweb.domain.OwnedDomainObject</meta> |
<meta attribute="scope-class">public abstract</meta> |
<id name="id" type="long"> |
33,7 → 33,7 |
<property name="sequenceNumber" type="long"/> |
<property name="description" type="text"/> |
<many-to-one name="owner" class="pt.estgp.estgweb.domain.GenericUser" lazy="false" outer-join="true"/> |
<set name="managers" lazy="true" table="managedIdentifierCollectionManagers"> |
<set name="managers" lazy="true" table="managedIdentifiercollectionmanagers"> |
<key column="collectionId"/> |
<many-to-many class="pt.estgp.estgweb.domain.User" column="managerId"/> |
</set> |
/impl/src/web/admin/courseunits/courseunit.jsp |
---|
84,11 → 84,11 |
<bean:message key="courseunit.teachers"/> |
</th> |
<td> |
<logic:lessEqual value="0" name="courseunit.id"> |
<logic:lessEqual value="0" name="CourseUnitView" property="id"> |
<i><bean:message key="courseunit.to.add.teachers.save.first"/></i> |
</logic:lessEqual> |
<logic:greaterThan value="0" name="courseunit.id"> |
<logic:greaterThan value="0" name="CourseUnitView" property="id"> |
<html:select property="teacherId"> |
<logic:present name="CourseUnitsForm" property="teachers"> |
<logic:iterate id="teacher" name="CourseUnitsForm" property="teachers" type="pt.estgp.estgweb.domain.views.UserView"> |
128,11 → 128,11 |
</th> |
<td> |
<logic:lessEqual value="0" name="courseunit.id"> |
<logic:lessEqual value="0" name="CourseUnitView" property="id"> |
<i><bean:message key="courseunit.to.add.students.save.first"/></i> |
</logic:lessEqual> |
<logic:greaterThan value="0" name="courseunit.id"> |
<logic:greaterThan value="0" name="CourseUnitView" property="id"> |
<html:text styleClass="text" property="studentCode"/> |
<input type="button" value="<bean:message key="add"/>" |
onclick="set(this.form,'addStudent');this.form.submit();"> |