Subversion Repositories bacoAlunos

Compare Revisions

Ignore whitespace Rev 2048 → Rev 2049

/es2018/18497/Projeto.iml
New file
0,0 → 1,150
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="FacetManager">
<facet type="web" name="Web">
<configuration>
<descriptors>
<deploymentDescriptor name="web.xml" url="file://$MODULE_DIR$/conf/web/web.xml" />
</descriptors>
<webroots>
<root url="file://$MODULE_DIR$/src/web" relative="/" />
<root url="file://$MODULE_DIR$/conf/web" relative="/WEB-INF" />
</webroots>
<sourceRoots />
</configuration>
<facet type="struts" name="Struts">
<configuration>
<option name="myStrutsValidationEnabled" value="true" />
<option name="myTilesValidationEnabled" value="true" />
<option name="myValidatorValidationEnabled" value="true" />
<option name="myReportErrorsAsWarnings" value="true" />
<option name="mySuppressPropertiesValidation" value="false" />
</configuration>
</facet>
</facet>
<facet type="hibernate" name="Hibernate">
<configuration>
<datasource-map>
<unit-entry name="conf:hibernate.cfg.xml" />
</datasource-map>
<naming-strategy-map />
<deploymentDescriptor name="hibernate.cfg.xml" url="file://$MODULE_DIR$/conf/hibernate.cfg.xml" />
</configuration>
</facet>
</component>
<component name="NewModuleRootManager">
<output url="file://$MODULE_DIR$/build/ant/classes" />
<output-test url="file://$MODULE_DIR$/build/ant/classes" />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/gen" isTestSource="false" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="module-library">
<library>
<CLASSES>
<root url="file://$MODULE_DIR$/lib/struts" />
</CLASSES>
<JAVADOC />
<SOURCES />
<jarDirectory url="file://$MODULE_DIR$/lib/struts" recursive="false" />
</library>
</orderEntry>
<orderEntry type="module-library">
<library>
<CLASSES>
<root url="file://$MODULE_DIR$/lib/dom4j" />
</CLASSES>
<JAVADOC />
<SOURCES />
<jarDirectory url="file://$MODULE_DIR$/lib/dom4j" recursive="false" />
</library>
</orderEntry>
<orderEntry type="module-library">
<library>
<CLASSES>
<root url="file://$MODULE_DIR$/lib/hibernate/mysql" />
</CLASSES>
<JAVADOC />
<SOURCES />
<jarDirectory url="file://$MODULE_DIR$/lib/hibernate/mysql" recursive="false" />
</library>
</orderEntry>
<orderEntry type="module-library">
<library>
<CLASSES>
<root url="file://$MODULE_DIR$/lib/json" />
</CLASSES>
<JAVADOC />
<SOURCES />
<jarDirectory url="file://$MODULE_DIR$/lib/json" recursive="false" />
</library>
</orderEntry>
<orderEntry type="module-library">
<library>
<CLASSES>
<root url="file://$MODULE_DIR$/lib/aspectj" />
</CLASSES>
<JAVADOC />
<SOURCES />
<jarDirectory url="file://$MODULE_DIR$/lib/aspectj" recursive="false" />
</library>
</orderEntry>
<orderEntry type="module-library">
<library>
<CLASSES>
<root url="file://$MODULE_DIR$/lib/junit" />
</CLASSES>
<JAVADOC />
<SOURCES />
<jarDirectory url="file://$MODULE_DIR$/lib/junit" recursive="false" />
</library>
</orderEntry>
<orderEntry type="module-library">
<library>
<CLASSES>
<root url="file://$MODULE_DIR$/lib/commons" />
</CLASSES>
<JAVADOC />
<SOURCES />
<jarDirectory url="file://$MODULE_DIR$/lib/commons" recursive="false" />
</library>
</orderEntry>
<orderEntry type="module-library">
<library>
<CLASSES>
<root url="file://$MODULE_DIR$/lib/log4j" />
</CLASSES>
<JAVADOC />
<SOURCES />
<jarDirectory url="file://$MODULE_DIR$/lib/log4j" recursive="false" />
</library>
</orderEntry>
<orderEntry type="module-library">
<library>
<CLASSES>
<root url="file://$MODULE_DIR$/lib/metrics" />
</CLASSES>
<JAVADOC />
<SOURCES />
<jarDirectory url="file://$MODULE_DIR$/lib/metrics" recursive="false" />
</library>
</orderEntry>
<orderEntry type="module-library">
<library>
<CLASSES>
<root url="file://$MODULE_DIR$/lib/hibernate/hibernate3" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="file://$MODULE_DIR$/lib/hibernate/hibernate3" />
</SOURCES>
<jarDirectory url="file://$MODULE_DIR$/lib/hibernate/hibernate3" recursive="false" />
<jarDirectory url="file://$MODULE_DIR$/lib/hibernate/hibernate3" recursive="false" type="SOURCES" />
</library>
</orderEntry>
<orderEntry type="library" name="Java EE 6-Java EE 6" level="project" />
<orderEntry type="library" name="Java EE 6-Java EE 6 (2)" level="project" />
</component>
</module>
/es2018/18497/conf/contexto.xml
1,4 → 1,5
<Context path="/project" docBase="C:/Users/danif/IdeaProjects/Exercico 5/build/ant/war"
 
<Context path="/project" docBase="/workspace/bacoAlunos/es2018/jmachado/build/ant/war"
debug="0">
<!-- Link to the user database we will get roles from -->
<ResourceLink name="users" global="UserDatabase"
/es2018/18497/conf/plugins.properties
New file
0,0 → 1,0
pt.estgp.es.exemplos.hibernate.web.pluginSession.RegisterSession=@pt.estgp.es.exemplos.hibernate.web.pluginSession.RegisterSession@
/es2018/18497/conf/jdbc.properties
2,4 → 2,4
hibernate.connection.driver_class=com.mysql.jdbc.Driver
hibernate.connection.username=@database.username@
hibernate.connection.password=@database.password@
hibernate.dialect=org.hibernate.dialect.MySQLDialect
hibernate.dialect=org.hibernate.dialect.MySQLDialect
/es2018/18497/conf/web/plugins.properties
File deleted
\ No newline at end of file
/es2018/18497/conf/web/tiles-default.xml
32,4 → 32,4
</definition>
 
 
</tiles-definitions>
</tiles-definitions>
/es2018/18497/conf/web/struts-default.xml
1,80 → 1,81
<?xml version="1.0" encoding="UTF-8"?>
 
<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
"http://struts.apache.org/dtds/struts-config_1_3.dtd">
"-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
"http://struts.apache.org/dtds/struts-config_1_3.dtd">
 
<struts-config>
 
 
<form-beans>
<!-- Import -->
<form-bean type="pt.estgp.es.exemplos.hibernate.web.login.LoginForm" name="LoginForm"/>
<!--<form-bean type="com.innovkey.opt.imports.web.ImportForm" name="ImportForm"/>-->
</form-beans>
<form-beans>
<!-- Import -->
<form-bean type="pt.estgp.es.exemplos.hibernate.web.login.LoginForm" name="LoginForm"/>
<!--<form-bean type="com.innovkey.opt.imports.web.ImportForm" name="ImportForm"/>-->
</form-beans>
 
<global-exceptions>
<global-exceptions>
 
</global-exceptions>
</global-exceptions>
 
<global-forwards>
<global-forwards>
 
</global-forwards>
</global-forwards>
 
 
 
<action-mappings>
<action-mappings>
 
 
<!--Portal Forward-->
<action path="/home" forward="page.home"/>
<!--Portal Forward-->
<action path="/home" forward="page.home"/>
 
<action path="/apresentaPagina" forward="page.pagina"/>
<action path="/apresentaPagina" forward="page.pagina"/>
 
 
<!--Authentication-->
<!-- <action path="/authenticate"
type="pt.estgp.estgweb.web.controllers.authenticate.AuthenticateController"
name="EmptyForm"
scope="request"
parameter="dispatch"
validate="false"
input="page.authentication">
<forward name="success" path="page.separators.home"/>
<forward name="logout" path="page.authentication"/>
<forward name="firstTimeAuthenticate" path="page.first.time.authenticate"/>
</action>-->
<!--Authentication-->
<!-- <action path="/authenticate"
type="pt.estgp.estgweb.web.controllers.authenticate.AuthenticateController"
name="EmptyForm"
scope="request"
parameter="dispatch"
validate="false"
input="page.authentication">
<forward name="success" path="page.separators.home"/>
<forward name="logout" path="page.authentication"/>
<forward name="firstTimeAuthenticate" path="page.first.time.authenticate"/>
</action>-->
 
 
<action path="/login"
type="pt.estgp.es.exemplos.hibernate.web.login.LoginAction"
name="LoginForm"
scope="request"
parameter="dispatch"
validate="false"
input="page.home">
<forward name="ok" path="page.home"/>
<forward name="fail" path="page.home"/>
</action>
<action path="/login"
type="pt.estgp.es.exemplos.hibernate.web.login.LoginAction"
name="LoginForm"
scope="request"
parameter="dispatch"
validate="false"
input="page.home">
<forward name="ok" path="page.home"/>
<forward name="fail" path="page.home"/>
</action>
 
 
 
 
 
</action-mappings>
<!--20 Megabytes upload max size can go until 700 MB nao se sabe porque
pontos possiveis de ajuste Fazer um UPLOAD Servlet
ver mais em app.properties max.file.size.upload.mbytes
</action-mappings>
<!--20 Megabytes upload max size can go until 700 MB nao se sabe porque
pontos possiveis de ajuste Fazer um UPLOAD Servlet
ver mais em app.properties max.file.size.upload.mbytes
 
aqui esta 50 para permitir ao App controlar e poder ser aumentado nao sendo afetado por este parametro
-->
<controller maxFileSize="50971520" processorClass="org.apache.struts.tiles.TilesRequestProcessor" />
<!--<message-resources parameter="MessageResources"/>-->
<!--<message-resources parameter="MessageResources" factory="pt.estgp.estgweb.domain.utils.ReloadablePropertyMessageResourcesFactory"/>-->
aqui esta 50 para permitir ao App controlar e poder ser aumentado nao sendo afetado por este parametro
-->
<controller maxFileSize="50971520" processorClass="org.apache.struts.tiles.TilesRequestProcessor" />
<!--<message-resources parameter="MessageResources"/>-->
<!--<message-resources parameter="MessageResources" factory="pt.estgp.estgweb.domain.utils.ReloadablePropertyMessageResourcesFactory"/>-->
 
 
<plug-in className="org.apache.struts.tiles.TilesPlugin">
<set-property property="definitions-config" value="/WEB-INF/tiles-default.xml"/>
</plug-in>
<plug-in className="org.apache.struts.tiles.TilesPlugin">
<set-property property="definitions-config" value="/WEB-INF/tiles-default.xml"/>
</plug-in>
 
 
</struts-config>
</struts-config>
/es2018/18497/conf/web/web.xml
29,6 → 29,11
</servlet>
 
<servlet>
<servlet-name>LoginRest</servlet-name>
<servlet-class>pt.estgp.es.exemplos.hibernate.web.login.LoginRest</servlet-class>
</servlet>
 
<servlet>
<servlet-name>PaginasDeleteServlet</servlet-name>
<servlet-class>pt.estgp.es.exemplos.hibernate.web.PaginasDeleteServlet</servlet-class>
</servlet>
70,6 → 75,10
<url-pattern>/paginas</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>LoginRest</servlet-name>
<url-pattern>/ws/api/login</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>PaginasDeleteServlet</servlet-name>
<url-pattern>/paginasDelete</url-pattern>
</servlet-mapping>
88,11 → 97,6
<location>/errors/403.jsp</location>
</error-page>
 
<error-page>
<error-code>500</error-code>
<location>/errors/500.jsp</location>
</error-page>
 
<jsp-config>
 
<taglib>
125,5 → 129,5
</welcome-file-list>
 
 
 
</web-app>
</web-app>
/es2018/18497/conf/hibernate.cfg.xml
8,25 → 8,24
<session-factory>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<!--<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/teste</property>-->
 
<property name="hibernate.connection.autoReconnect">true</property>
<property name="hibernate.connection.autoReconnectForPools">true</property>
<property name="hibernate.connection.autocommit">false</property>
<!--<property name="show_sql">false</property>-->
 
<property name="current_session_context_class">thread</property>
<!--<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">daniel1998</property>-->
 
<property name="hibernate.connection.url">@database.connection.url@</property>
<property name="hibernate.connection.username">@database.username@</property>
<property name="hibernate.connection.password">@database.password@</property>
<property name="show_sql">@hibernate.show.sql@</property>
 
<!--<property name="hibernate.connection.pool_size">3</property> -->
<!-- <property name="hibernate.connection.pool_size">3</property> -->
 
<mapping resource="pt/estgp/es/exemplos/hibernate/Pagina.hbm.xml"/>
<mapping resource="pt/estgp/es/exemplos/hibernate/Seccao.hbm.xml"/>
<mapping resource="pt/estgp/es/exemplos/hibernate/User.hbm.xml"/>
<mapping resource="pt/estgp/es/exemplos/hibernate/UserSession.hbm.xml"/>
</session-factory>
</hibernate-configuration>
/es2018/18497/local.properties
New file
0,0 → 1,0
pt.estgp.es.exemplos.hibernate.web.pluginSession.RegisterSession=pt.estgp.es.exemplos.hibernate.web.pluginSession.DevelopRegisterSession
/es2018/18497/src/java/pt/estgp/es/exemplos/hibernate/UserImpl.java
1,4 → 1,5
package pt.estgp.es.exemplos.hibernate;
 
public class UserImpl extends User {
 
}
/es2018/18497/src/java/pt/estgp/es/exemplos/hibernate/utils/StreamsUtils.java
New file
0,0 → 1,140
package pt.estgp.es.exemplos.hibernate.utils;
 
import java.io.*;
import java.security.DigestInputStream;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
 
/**
* @author Jorge Machado
* @date 27/Mai/2008
* @see jomm.utils
*/
public class StreamsUtils
{
public static byte[] readBytes(InputStream stream) throws IOException
{
ByteArrayOutputStream b = new ByteArrayOutputStream();
int readedBytes;
byte[] buf = new byte[1024];
while ((readedBytes = stream.read(buf)) > 0)
{
b.write(buf, 0, readedBytes);
}
b.close();
return b.toByteArray();
}
 
public static String readString(InputStream stream) throws IOException
{
ByteArrayOutputStream b = new ByteArrayOutputStream();
int readedBytes;
byte[] buf = new byte[1024];
while ((readedBytes = stream.read(buf)) > 0)
{
b.write(buf, 0, readedBytes);
}
b.close();
return b.toString();
}
 
public static void inputStream2File(InputStream stream, File f) throws IOException
{
f.getParentFile().mkdirs();
FileOutputStream out = new FileOutputStream(f);
inputStream2OutputStream(stream,out);
}
 
/**
* ATENTION this method does not close the given stream
* @param stream
* @param f
* @return
* @throws IOException
*/
public static String inputStream2FileGetMd5(InputStream stream, File f) throws IOException
{
f.getParentFile().mkdirs();
FileOutputStream out = new FileOutputStream(f);
return inputStream2OutputStreamGetMd5(stream, out);
}
 
public static void inputStream2OutputStream(InputStream stream, OutputStream out) throws IOException
{
inputStream2OutputStream(stream,out,true,true);
}
 
public static void inputStream2OutputStream(InputStream stream, OutputStream out,boolean closeOut,boolean closeIn) throws IOException
{
int readedBytes;
byte[] buf = new byte[1024];
while ((readedBytes = stream.read(buf)) > 0)
{
out.write(buf, 0, readedBytes);
}
if(closeIn)
stream.close();
if(closeOut)
out.close();
}
 
/**
* Return digest Md5 from consumed bytes
* * ATENTION this method does not close the given stream
* @param stream
* @param out
* @return Md5 HEX
* @throws IOException
*/
public static String inputStream2OutputStreamGetMd5(InputStream stream, OutputStream out) throws IOException
{
MessageDigest messageDigest = null;
try {
messageDigest = MessageDigest.getInstance("MD5");
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
 
DigestInputStream digestInputStream = new DigestInputStream(stream, messageDigest);
int readedBytes;
byte[] buf = new byte[1024];
while ((readedBytes = digestInputStream.read(buf)) > 0)
{
out.write(buf, 0, readedBytes);
}
messageDigest = digestInputStream.getMessageDigest();
String md5 = BytesUtils.toHex(messageDigest.digest());
out.close();
return md5;
}
 
/**
* Return digest Md5 from consumed bytes
* * ATENTION this method does not close the given stream
* @param stream
* @param out
* @return Md5 HEX
* @throws IOException
*/
public static String getFileMd5(File f) throws IOException
{
MessageDigest messageDigest = null;
try {
messageDigest = MessageDigest.getInstance("MD5");
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
 
DigestInputStream digestInputStream = new DigestInputStream(new FileInputStream(f), messageDigest);
int readedBytes;
byte[] buf = new byte[1024];
while ((readedBytes = digestInputStream.read(buf)) > 0)
{
//nottinhg to do only calculate nd5
}
messageDigest = digestInputStream.getMessageDigest();
String md5 = BytesUtils.toHex(messageDigest.digest());
digestInputStream.close();
return md5;
}
}
/es2018/18497/src/java/pt/estgp/es/exemplos/hibernate/utils/BytesUtils.java
New file
0,0 → 1,268
package pt.estgp.es.exemplos.hibernate.utils;
 
 
import org.apache.commons.lang.RandomStringUtils;
import org.apache.log4j.Logger;
 
import java.io.*;
import java.math.BigInteger;
import java.rmi.dgc.VMID;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Random;
 
/**
*
* @author Jorge Machado
*/
 
public class BytesUtils {
private static int counter = 0;
private static Random random = new Random();
private static VMID vmid = new VMID();
private static Logger logger = Logger.getLogger(BytesUtils.class);
 
/** Private Constructor */
 
private BytesUtils () {}
 
 
public static String getMd5FromFile(String filepath)
{
return getMD5(getBytes(filepath));
}
 
public static byte[] getBytes(String fileName)
{
 
byte[] data = null;
try{
 
FileInputStream r = new FileInputStream(fileName);
 
File f = new File(fileName);
 
//this value is never bigger than a integer
int len =(int) f.length();
 
data = new byte[len];
 
int bytesRead = 0;
 
bytesRead = r.read(data);
 
r.close();
 
if(bytesRead == -1)
return null;
 
 
}
catch(FileNotFoundException e)
{
logger.error("Files getBytes()",e);
return null;
}
catch(IOException e)
{
logger.error("Files getData()",e);
return null;
}
return data;
}
 
public static String getMD5(String data)
{
return getMD5(data.getBytes());
}
 
public static String getMD5(byte[] data)
{
return toHex(getMD5Bytes(data));
}
 
public static String getDigestMD5Hex(String str){
byte[] digest = getDigestMD5(str.getBytes());
if(digest != null)
return toHex(digest);
 
return null;
}
public static byte[] getDigestMD5(byte[] data)
{
byte[] result = null;
try{
MessageDigest md5 = MessageDigest.getInstance("MD5");
 
md5.update(data);
 
result = md5.digest();
 
}
catch(NoSuchAlgorithmException e)
{
//this never hapens beacause MD5 is a correct algoritm
logger.fatal("MD5 function does not exists",e);
}
 
return result;
}
/*********************************************************
*Returns true if the two digests are equal
*
*******************************************************/
public static boolean isDigestEqual(byte[] b1,byte[] b2)
{
 
try{
MessageDigest md5 = MessageDigest.getInstance("MD5");
 
return md5.isEqual(b1,b2);
 
}
catch(NoSuchAlgorithmException e)
{
//this never hapens beacause MD5 is a correct algoritm
logger.fatal("MD5 function does not exists",e);
}
 
return false;
 
}
 
public static byte[] getMD5Bytes(byte[] data)
{
try
{
MessageDigest digest = MessageDigest.getInstance("MD5");
 
return digest.digest(data);
}
catch (NoSuchAlgorithmException e)
{
logger.fatal("MD5 function does not exists",e);
}
return null;
}
 
/**
* Return a hex representation of the byte array
*
* @param data The data to transform.
* @return A hex representation of the data.
*/
public static String toHex(byte[] data)
{
if ((data == null) || (data.length == 0))
return null;
 
StringBuffer result = new StringBuffer();
 
// This is far from the most efficient way to do things...
for (int i = 0; i < data.length; i++)
{
int low = (int) (data[i] & 0x0F);
int high = (int) (data[i] & 0xF0);
 
result.append(Integer.toHexString(high).substring(0, 1));
result.append(Integer.toHexString(low));
}
 
return result.toString();
}
 
/**
* Generate a unique key.
* The key is a long (length 38 to 40) sequence of digits.
*
* @return A unique key as a long sequence of base-10 digits.
*/
public static String generateKey()
{
return new BigInteger(generateBytesKey()).abs().toString();
}
 
/**
* Generate a unique key.
* The key is a 32-character long sequence of hex digits.
*
* @return A unique key as a long sequence of hex digits.
*/
public static String generateHexKey()
{
return toHex(generateBytesKey());
}
 
/**
* Generate a unique key as a byte array.
*
* @return A unique key as a byte array.
*/
public static synchronized byte[] generateBytesKey()
{
byte[] junk = new byte[16];
 
random.nextBytes(junk);
 
String input = new StringBuffer().append(vmid).append(new java.util.Date()).append(junk).append(counter++).toString();
 
return getMD5Bytes(input.getBytes());
}
 
// The following two methods are taken from the Jakarta IOUtil class.
 
/**
* Copy stream-data from source to destination. This method does not
* buffer, flush or close the streams, as to do so would require making
* non-portable assumptions about the streams' origin and further use. If
* you wish to perform a buffered copy, use {@link #bufferedCopy}.
*
* @param input The InputStream to obtain data from.
* @param output The OutputStream to copy data to.
*/
public static void copy( final InputStream input, final OutputStream output )
throws IOException
{
final int BUFFER_SIZE = 1024 * 4;
final byte[] buffer = new byte[ BUFFER_SIZE ];
 
while( true )
{
final int count = input.read( buffer, 0, BUFFER_SIZE );
if( -1 == count ) break;
 
// write out those same bytes
output.write( buffer, 0, count );
}
 
//needed to flush cache
//output.flush();
}
 
 
public static void bufferedCopy( final InputStream source, final OutputStream destination )
throws IOException
{
final BufferedInputStream input = new BufferedInputStream( source );
final BufferedOutputStream output = new BufferedOutputStream( destination );
copy( input, output );
output.flush();
}
 
public static int gen5DigitsKey() {
Random r = new Random( System.currentTimeMillis() );
return 10000 + r.nextInt(20000);
}
 
public static String genCharsDigitsKey(int number) {
String characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789~`!@#$%^&*()-_=+[{]},<.>?";
return RandomStringUtils.random(number, characters);
}
 
public static void main(String[] args)
{
System.out.println(gen5DigitsKey());
}
 
 
}
/es2018/18497/src/java/pt/estgp/es/exemplos/hibernate/PaginaImpl.java
5,22 → 5,31
 
public class PaginaImpl extends Pagina {
 
public static void main() {
public static void main(String [] args)
{
 
System.out.println("new PaginaImpl().getSaveDate().toString() = " + new PaginaImpl().getSaveDate().toString());
System.out.println("new PaginaImpl().getSaveDate().toString() = " + new PaginaImpl().getSaveDate().toString());
HibernateUtils.getCurrentSession().beginTransaction();
 
HibernateUtils.getCurrentSession().beginTransaction();
Pagina p2 = new PaginaImpl();
p2.setNome("Teste 2");
HibernateUtils.getCurrentSession().save(p2);
HibernateUtils.getCurrentSession().createCriteria(Pagina.class).list();
List<Pagina> ps = HibernateUtils.getCurrentSession().createCriteria(Pagina.class).list();
for (Pagina p: ps) {
p.setNome(p.getNome() + " nnn ");
}
HibernateUtils.getCurrentSession().getTransaction().commit();
 
Pagina p2 = new PaginaImpl();
p2.setNome("Teste 2");
HibernateUtils.getCurrentSession().save(p2);
HibernateUtils.getCurrentSession().createCriteria(Pagina.class).list();
List<Pagina> ps = HibernateUtils.getCurrentSession().createCriteria(Pagina.class).list();
 
for (Pagina p: ps) {
p.setNome(p.getNome() + " nnn ");
}
 
HibernateUtils.getCurrentSession().getTransaction().commit();
}
 
 
 
 
 
 
 
}
/es2018/18497/src/java/pt/estgp/es/exemplos/hibernate/Seccao.hbm.xml
1,7 → 1,7
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
 
<hibernate-mapping>
<class name="pt.estgp.es.exemplos.hibernate.Seccao" table="seccao">
16,6 → 16,7
<property name="titulo" type="string" />
<many-to-one name="pagina" class="pt.estgp.es.exemplos.hibernate.Pagina" column="pagina_id" outer-join="true" cascade="none"/>
 
 
<subclass name="pt.estgp.es.exemplos.hibernate.SeccaoImpl" discriminator-value="SeccaoImpl"/>
</class>
</hibernate-mapping>
/es2018/18497/src/java/pt/estgp/es/exemplos/hibernate/HibernateUtils.java
5,6 → 5,7
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.proxy.HibernateProxy;
 
public class HibernateUtils {
 
61,4 → 62,23
return getSessionFactory().getCurrentSession();
}
 
/**
*
* @param o
* @return
*/
public static Object narrow(Object o)
{
if(o == null)
return null;
 
if (o instanceof HibernateProxy)
{
return ((HibernateProxy)o).getHibernateLazyInitializer().getImplementation();
}
 
return o;
}
 
 
}
/es2018/18497/src/java/pt/estgp/es/exemplos/hibernate/User.hbm.xml
1,7 → 1,7
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
 
<hibernate-mapping>
<class name="pt.estgp.es.exemplos.hibernate.User" table="user">
23,4 → 23,3
<subclass name="pt.estgp.es.exemplos.hibernate.UserImpl" discriminator-value="UserImpl"/>
</class>
</hibernate-mapping>
 
/es2018/18497/src/java/pt/estgp/es/exemplos/hibernate/Pagina.hbm.xml
1,25 → 1,25
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
 
<hibernate-mapping>
<class name="pt.estgp.es.exemplos.hibernate.Pagina" table="pagina" abstract="true">
<meta attribute="scope-class">public abstract</meta>
<meta attribute="extends">DomainObject</meta>
<id name="id" type="long">
<generator class="native" />
</id>
<discriminator column="discriminator"/>
<timestamp source="db" name="updateDate"/>
<property name="saveDate" type="timestamp"/>
<property name="nome" type="string" />
<many-to-one name="dono" class="pt.estgp.es.exemplos.hibernate.User"/>
<list name="seccoes" cascade="none">
<key column="pagina_id"/>
<index column="i" />
<one-to-many class="pt.estgp.es.exemplos.hibernate.Seccao" />
</list>
<subclass name="pt.estgp.es.exemplos.hibernate.PaginaImpl" discriminator-value="PaginaImpl"/>
</class>
<class name="pt.estgp.es.exemplos.hibernate.Pagina" table="pagina" abstract="true">
<meta attribute="scope-class">public abstract</meta>
<meta attribute="extends">DomainObject</meta>
<id name="id" type="long">
<generator class="native" />
</id>
<discriminator column="discriminator"/>
<timestamp source="db" name="updateDate"/>
<property name="saveDate" type="timestamp"/>
<property name="nome" type="string" />
<many-to-one name="dono" class="pt.estgp.es.exemplos.hibernate.User"/>
<list name="seccoes" cascade="none">
<key column="pagina_id"/>
<index column="i" />
<one-to-many class="pt.estgp.es.exemplos.hibernate.Seccao" />
</list>
<subclass name="pt.estgp.es.exemplos.hibernate.PaginaImpl" discriminator-value="PaginaImpl"/>
</class>
</hibernate-mapping>
/es2018/18497/src/java/pt/estgp/es/exemplos/hibernate/services/ServicoSessoes.java
11,33 → 11,34
 
public class ServicoSessoes {
 
/**
* Regista-se o contexto de segurança no monitor e cria-se uma sessão na base de dados
* se não existir
* @param requester
* @return UserSession registada para o Requester
*/
@Transaction
public UserSession registerUserSession(String requester) {
/**
* Regista-se o contexto de segurança no monitor e cria-se uma sessão na base de dados
* se não existir
* @param requester
* @return UserSession registada para o Requester
*/
@Transaction
public UserSession registerUserSession(String requester) {
 
SecurityContextProvider.getInstance().registerSessionContext(requester);
UserSession session;
SecurityContextProvider.getInstance().registerSessionContext(requester);
UserSession session;
try {
session = (UserSession) HibernateUtils.getCurrentSession().load(UserSession.class, requester);
if(session == null)
{
session = new UserSessionImpl();
session.setCookie(requester);
HibernateUtils.getCurrentSession().save(session);
}
}
session = (UserSession) HibernateUtils.getCurrentSession().get(UserSession.class, requester);
if(session == null)
{
session = new UserSessionImpl();
session.setCookie(requester);
HibernateUtils.getCurrentSession().save(session);
}
}
catch(Exception e)
{
{
 
session = new UserSessionImpl();
session.setCookie(requester);
HibernateUtils.getCurrentSession().save(session);
}
session = new UserSessionImpl();
session.setCookie(requester);
HibernateUtils.getCurrentSession().save(session);
}
session = (UserSession) HibernateUtils.narrow(session);
return session;
}
}
}
/es2018/18497/src/java/pt/estgp/es/exemplos/hibernate/services/ServicoPaginas.java
17,9 → 17,7
 
private static final Logger logger = Logger.getLogger(ServicoPaginas.class);
 
@Transaction
@IsAuthenticated
@HasRole(role = "admin")
@Transaction @IsAuthenticated @HasRole(role = "admin")
public void criaSeccaoService(String idPagina, String titulo)
{
try {
27,27 → 25,29
} catch (ServletException e) {
e.printStackTrace();
}
 
Pagina p = (Pagina) HibernateUtils.getCurrentSession().load(Pagina.class, new Long(idPagina));
Pagina p = (Pagina) HibernateUtils.getCurrentSession().load(Pagina.class,new Long(idPagina));
Seccao seccao = new SeccaoImpl();
seccao.setTitulo(titulo);
p.getSeccoes().add(seccao);
seccao.setPagina(p);
 
 
HibernateUtils.getCurrentSession().save(seccao);
}
 
@Transaction
@IsAuthenticated
@HasRole(role = "admin")
@Transaction @IsAuthenticated @HasRole(role = "admin")
public long deleteSeccaoService(String idSeccao)
{
Seccao seccao = (Seccao) HibernateUtils.getCurrentSession().load(Seccao.class, new Long(idSeccao));
Seccao seccao = (Seccao) HibernateUtils.getCurrentSession().load(Seccao.class,new Long(idSeccao));
 
 
long id = seccao.getPagina().getId();
seccao.getPagina().getSeccoes().remove(seccao);
seccao.setPagina(null);
HibernateUtils.getCurrentSession().delete(seccao);
 
return id;
 
}
 
}
/es2018/18497/src/java/pt/estgp/es/exemplos/hibernate/Main.java
17,6 → 17,8
{
 
 
 
 
//HibernateUtils.getCurrentSession().beginTransaction();
 
//HibernateUtils.getCurrentSession().connection().commit();
52,6 → 54,9
seccao.setPagina(p);
 
 
 
 
 
HibernateUtils.getCurrentSession().connection().commit();
 
 
/es2018/18497/src/java/pt/estgp/es/exemplos/hibernate/UserSession.hbm.xml
1,7 → 1,7
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
 
<hibernate-mapping>
<class name="pt.estgp.es.exemplos.hibernate.UserSession" table="usersession">
/es2018/18497/src/java/pt/estgp/es/exemplos/hibernate/security/example/ServiceExample.java
1,6 → 1,5
package pt.estgp.es.exemplos.hibernate.security.example;
 
 
import pt.estgp.es.exemplos.hibernate.security.logic.HasRole;
import pt.estgp.es.exemplos.hibernate.security.logic.IsAuthenticated;
import pt.estgp.es.exemplos.hibernate.security.logic.PrintParameterExample;
18,7 → 17,7
System.out.println("Entrou no servico autenticado");
}
 
@HasRole(role = "admin")
@HasRole(role = "admin,ci")
@PrintParameterExample(paramName = "frase")
public void servicoDeTesteComRoleAdmin(String frase)
{
/es2018/18497/src/java/pt/estgp/es/exemplos/hibernate/security/logic/SecurityAspects.java
9,21 → 9,23
import pt.estgp.es.exemplos.hibernate.UserSession;
import pt.estgp.es.exemplos.hibernate.security.SecurityContextProvider;
 
import java.util.Arrays;
 
 
/**
* Created by jorgemachado on 18/10/18.
*/
@Aspect
public class SecurityAspects
{
private static final Logger logger= Logger.getLogger(SecurityAspects.class);
 
 
private static final Logger logger = Logger.getLogger(SecurityAspects.class);
//Defines a pointcut that we can use in the @Before,@After, @AfterThrowing, @AfterReturning,@Around specifications
//The pointcut will look for the @YourAnnotation
@Pointcut("@annotation(Transaction)")
public void serviceTransactionPointCutDefinition(){}
 
 
@Pointcut("@annotation(IsAuthenticated)")
public void isAuthenticatedPointCut(){}
 
36,52 → 38,69
@Pointcut("execution(* *(..))")
public void executionPointCut(){}
 
 
@Around("serviceTransactionPointCutDefinition() && executionPointCut()")
public Object envolventeServico(ProceedingJoinPoint pjp) throws Throwable
{
HibernateUtils.getCurrentSession().beginTransaction();
//Sugestão: um motor de serviços poderia neste ponto abrir a transação na base de dados
System.out.println("Iniciando chamada do servico:" + pjp.getSignature().getName() +
logger.info("Iniciando chamada do servico:" + pjp.getSignature().getName() +
" na classe " + pjp.getSourceLocation().getClass().getName());
try {
Object returnObj = pjp.proceed();
//Sugestão: um motor de serviços poderia neste ponto fazer commit da transação na base de dados
System.out.println("Terminado chamada do servico");
logger.info("Terminado chamada do servico");
HibernateUtils.getCurrentSession().getTransaction().commit();
 
return returnObj;
} catch (Exception e) {
HibernateUtils.getCurrentSession().getTransaction().rollback();
 
//Sugestão: um motor de serviços poderia neste ponto fazer rollback da transação na base de dados
System.out.println("Excepcao no Servico");
logger.error("Excepcao no Servico",e);
throw e;
}
}
 
 
@Around("isAuthenticatedPointCut() && executionPointCut()")
public Object isAuthenticatedAdvise(ProceedingJoinPoint pjp) throws Throwable
{
logger.info("Is Authenticated Aspect");
String cookie = SecurityContextProvider.getInstance().getSecuritySessionContext().getRequester();
UserSession session = (UserSession) HibernateUtils.getCurrentSession().load(UserSession.class,cookie);
 
if(session.getUser() != null)
return pjp.proceed();
//Com o cookie ir buscar a sessao e seguidamente o User e ver se esta logado
if(true)
return pjp.proceed();
 
 
throw new NotAuthenticatedException("Access Denied, not authenticated at " + pjp.getSourceLocation().getFileName() + " " + pjp.getSourceLocation().getLine() + " service: " + pjp.getSignature().getName());
}
 
@Around("hasRolePointCut(hasRole) && executionPointCut()")
public Object hasRoleAdvise(ProceedingJoinPoint pjp, HasRole hasRole) throws Throwable
{
//String username = SecurityContextProvider.getInstance().getSecuritySessionContext().getUsername();
logger.info("Has Role Aspect");
String cookie = SecurityContextProvider.getInstance().getSecuritySessionContext().getRequester();
UserSession session = (UserSession) HibernateUtils.getCurrentSession().load(UserSession.class,cookie);
 
String[] rolesIn = hasRole.role().split(",");
if(session.getUser() == null)
throw new NotAuthenticatedException("Access Denied, not authenticated at " + pjp.getSourceLocation().getFileName() + " " + pjp.getSourceLocation().getLine() + " service: " + pjp.getSignature().getName());
//session.getUser().get
//verificar se o username é um user com o role que está em hasRole.role()
/*if(session.getUser() == null){
throw new FailRoleException("Access Denied, does not have role " + hasRole.role() + " at " + pjp.getSourceLocation().getFileName() + " " + pjp.getSourceLocation().getLine() + " service: " + pjp.getSignature().getName());
}*/
boolean pass = false;
if(pass)
return pjp.proceed();
if(session.getUser().getRoles() == null)
throw new NotAuthenticatedException("Access Denied, missing role at " + pjp.getSourceLocation().getFileName() + " " + pjp.getSourceLocation().getLine() + " service: " + pjp.getSignature().getName());
 
String[] roles = session.getUser().getRoles().split(",");
for(String checkRole: rolesIn)
{
if(Arrays.asList(roles).contains(checkRole))
{
return pjp.proceed();
}
}
 
 
throw new FailRoleException("Access Denied, does not have role " + hasRole.role() + " at " + pjp.getSourceLocation().getFileName() + " " + pjp.getSourceLocation().getLine() + " service: " + pjp.getSignature().getName());
}
 
91,4 → 110,7
System.out.println("PARAMETRO: " + JointPointUtils.getParameter(pjp,printParameterExample.paramName()));
return pjp.proceed();
}
 
 
 
}
/es2018/18497/src/java/pt/estgp/es/exemplos/hibernate/web/pluginSession/ServerRegisterSession.java
11,21 → 11,24
public class ServerRegisterSession implements RegisterSession {
 
 
/**
* Abre uma sessao se esta não existir
* Não lida com o User da Sessão, se não existir
* significa que não está autenticado
*
* @param servletRequest
* @return
* @throws IOException
* @throws ServletException
*/
/**
* Abre uma sessao se esta não existir
* Não lida com o User da Sessão, se não existir
* significa que não está autenticado
*
* @param servletRequest
* @return
* @throws IOException
* @throws ServletException
*/
@Override
public UserSession openSession(ServletRequest servletRequest)
{
return new ServicoSessoes()
.registerUserSession(
((HttpServletRequest)servletRequest).getSession().getId()
);
}
 
@Override
public UserSession openSession(ServletRequest servletRequest)
{
return new ServicoSessoes().registerUserSession(((HttpServletRequest)servletRequest).getSession().getId());
}
 
}
/es2018/18497/src/java/pt/estgp/es/exemplos/hibernate/web/pluginSession/PluginFactory.java
5,19 → 5,19
 
public class PluginFactory
{
static Properties properties = new Properties();
static
{
try {
properties.load(PluginFactory.class.getResourceAsStream("/plugins.properties"));
} catch (IOException e) {
e.printStackTrace();
}
}
static Properties properties = new Properties();
static
{
try {
properties.load(PluginFactory.class.getResourceAsStream("/plugins.properties"));
} catch (IOException e) {
e.printStackTrace();
}
}
 
public static Object getPlugin(Class iface) throws ClassNotFoundException,IllegalAccessException, InstantiationException {
public static Object getPlugin(Class iface) throws ClassNotFoundException, IllegalAccessException, InstantiationException
{
String classNameVerdadeiro = properties.getProperty(iface.getName());
return Class.forName(classNameVerdadeiro).newInstance();
}
}
 
}
/es2018/18497/src/java/pt/estgp/es/exemplos/hibernate/web/pluginSession/DevelopRegisterSession.java
13,37 → 13,43
 
public class DevelopRegisterSession implements RegisterSession {
 
/**
* Abre uma sessao se esta não existir e associa-a sempre ao User com id 1
* @param servletRequest
* @return
* @throws IOException
* @throws ServletException
*/
@Override
public UserSession openSession(ServletRequest servletRequest) {
HttpServletRequest request = (HttpServletRequest) servletRequest;
/**
* Abre uma sessao se esta não existir e associa-a sempre ao User com id 1
* @param servletRequest
* @return
* @throws IOException
* @throws ServletException
*/
@Override
public UserSession openSession(ServletRequest servletRequest) {
HttpServletRequest request = (HttpServletRequest) servletRequest;
 
SecurityContextProvider.getInstance().registerSessionContext(request.getSession().getId());
UserSession session;
HibernateUtils.getCurrentSession().beginTransaction();
try {
session = (UserSession) HibernateUtils.getCurrentSession().load(UserSession.class, request.getSession().getId());
if(session == null)
{
session = new UserSessionImpl();
session.setCookie(request.getSession().getId());
HibernateUtils.getCurrentSession().save(session);
}
}catch(Exception e)
{
session = new UserSessionImpl();
session.setCookie(request.getSession().getId());
HibernateUtils.getCurrentSession().save(session);
SecurityContextProvider.getInstance().registerSessionContext(request.getSession().getId());
UserSession session;
HibernateUtils.getCurrentSession().beginTransaction();
try {
//TODO Mudar par get em vez de load como demonstra a imagem
session = (UserSession) HibernateUtils.getCurrentSession().get(UserSession.class, request.getSession().getId());
if(session == null)
{
session = new UserSessionImpl();
session.setCookie(request.getSession().getId());
HibernateUtils.getCurrentSession().save(session);
}
}catch(Exception e)
{
session = new UserSessionImpl();
session.setCookie(request.getSession().getId());
HibernateUtils.getCurrentSession().save(session);
}
User u = (User) HibernateUtils.getCurrentSession().get(User.class, new Long(1));
 
u = (User) HibernateUtils.narrow(u);
 
session.setUser(u);
 
session = (UserSession) HibernateUtils.narrow(session);
HibernateUtils.getCurrentSession().getTransaction().commit();
return session;
}
User u = (User) HibernateUtils.getCurrentSession().load(User.class, new Long(1));
session.setUser(u);
HibernateUtils.getCurrentSession().getTransaction().commit();
return session;
}
}
/es2018/18497/src/java/pt/estgp/es/exemplos/hibernate/web/pluginSession/RegisterSession.java
9,4 → 9,4
public interface RegisterSession
{
public UserSession openSession(ServletRequest servletRequest);
}
}
/es2018/18497/src/java/pt/estgp/es/exemplos/hibernate/web/UserFilter.java
16,13 → 16,13
import static org.hibernate.criterion.Restrictions.*;
 
public class UserFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
 
}
}
 
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletResponse response = (HttpServletResponse) servletResponse;
//response.sendError(403);
 
35,16 → 35,15
 
User u = session.getUser();
if(u != null)
filterChain.doFilter(servletRequest,response);
filterChain.doFilter(servletRequest,response);
 
else
response.sendError(403);
response.sendError(403);
HibernateUtils.getCurrentSession().getTransaction().rollback();
}
}
 
@Override
public void destroy() {
@Override
public void destroy() {
 
}
}
 
}
}
/es2018/18497/src/java/pt/estgp/es/exemplos/hibernate/web/PaginasServlet.java
1,8 → 1,12
package pt.estgp.es.exemplos.hibernate.web;
 
import pt.estgp.es.exemplos.hibernate.HibernateUtils;
import pt.estgp.es.exemplos.hibernate.Pagina;
import pt.estgp.es.exemplos.hibernate.Seccao;
import pt.estgp.es.exemplos.hibernate.services.ServicoPaginas;
 
import java.io.IOException;
import java.util.ArrayList;
 
public class PaginasServlet extends javax.servlet.http.HttpServlet
{
/es2018/18497/src/java/pt/estgp/es/exemplos/hibernate/web/login/LoginAction.java
5,7 → 5,6
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;
 
 
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
13,25 → 12,25
 
public class LoginAction extends DispatchAction
{
public ActionForward login(ActionMapping mapping,
ActionForm form ,
HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException
{
public ActionForward login(ActionMapping mapping,
ActionForm form ,
HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException
{
 
LoginForm lf = (LoginForm) form;
LoginForm lf = (LoginForm) form;
 
 
 
System.out.println(lf.getUsername());
System.out.println(lf.getPassword());
System.out.println(lf.getUsername());
System.out.println(lf.getPassword());
 
 
return mapping.getInputForward();
return mapping.getInputForward();
 
//return mapping.findForward("ok");
//return mapping.findForward("ok");
 
}
}
 
}
/es2018/18497/src/java/pt/estgp/es/exemplos/hibernate/web/login/LoginRest.java
New file
0,0 → 1,59
package pt.estgp.es.exemplos.hibernate.web.login;
 
import org.json.JSONException;
import org.json.JSONObject;
import pt.estgp.es.exemplos.hibernate.HibernateUtils;
import pt.estgp.es.exemplos.hibernate.UserSession;
import pt.estgp.es.exemplos.hibernate.web.SecurityFilter;
import pt.estgp.es.exemplos.hibernate.web.UserFilter;
import pt.estgp.es.exemplos.hibernate.web.rest.AbstractRestServlet;
 
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
 
public class LoginRest extends AbstractRestServlet
{
public JSONObject login(JSONObject data, HttpServletRequest req, HttpServletResponse resp) throws JSONException
{
String username = data.getString("username");
String password = data.getString("password");
 
HibernateUtils.getCurrentSession().beginTransaction();
 
//TODO COMPLETAR
UserSession session = null;
try {
session = SecurityFilter.loadSessionProxy(req);
UserSession persistente = (UserSession) HibernateUtils.getCurrentSession().get(UserSession.class,session.getCookie());
//persistente.setUser(u);
} catch (IOException e) {
e.printStackTrace();
} catch (ServletException e) {
e.printStackTrace();
}
 
 
 
System.out.println(username);
System.out.println(password);
 
 
 
JSONObject js = new JSONObject();
js.put("result","ok");
 
addMessage("User autenticado com sucesso",req);
 
return js;
}
 
public JSONObject logout(JSONObject data, HttpServletRequest req, HttpServletResponse resp) throws JSONException
{
JSONObject js = new JSONObject();
js.put("result","ok");
 
return js;
}
}
/es2018/18497/src/java/pt/estgp/es/exemplos/hibernate/web/login/LoginForm.java
1,6 → 1,5
package pt.estgp.es.exemplos.hibernate.web.login;
 
 
import org.apache.struts.action.ActionForm;
import org.apache.struts.upload.FormFile;
 
11,19 → 10,19
String password;
 
 
public String getUsername() {
public String getUsername() {
return username;
}
}
 
public void setUsername(String username) {
this.username = username;
}
public void setUsername(String username) {
this.username = username;
}
 
public String getPassword() {
return password;
}
public String getPassword() {
return password;
}
 
public void setPassword(String password) {
this.password = password;
}
public void setPassword(String password) {
this.password = password;
}
}
/es2018/18497/src/java/pt/estgp/es/exemplos/hibernate/web/PaginasDeleteServlet.java
1,6 → 1,7
package pt.estgp.es.exemplos.hibernate.web;
 
import pt.estgp.es.exemplos.hibernate.HibernateUtils;
import pt.estgp.es.exemplos.hibernate.Pagina;
import pt.estgp.es.exemplos.hibernate.Seccao;
import pt.estgp.es.exemplos.hibernate.services.ServicoPaginas;
 
15,10 → 16,10
 
String idSeccao = request.getParameter("idSeccao");
 
Long idPagina = new ServicoPaginas().deleteSeccaoService(idSeccao);
 
long idPagina = new ServicoPaginas().deleteSeccaoService(idSeccao);
 
request.setAttribute("id",idPagina);
 
request.getRequestDispatcher("apresentaPagina.jsp").forward(request,response);
}
 
/es2018/18497/src/java/pt/estgp/es/exemplos/hibernate/web/SecurityFilter.java
1,52 → 1,55
package pt.estgp.es.exemplos.hibernate.web;
 
import org.apache.log4j.Logger;
import pt.estgp.es.exemplos.hibernate.HibernateUtils;
import pt.estgp.es.exemplos.hibernate.UserSession;
import pt.estgp.es.exemplos.hibernate.web.pluginSession.PluginFactory;
import pt.estgp.es.exemplos.hibernate.web.pluginSession.RegisterSession;
 
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
 
public class SecurityFilter implements Filter {
 
private static final Logger logger = Logger.getLogger(SecurityFilter.class);
private static final String SESSION_IN_REQUEST_KEY = "UserSession";
 
@Override
public void init(FilterConfig filterConfig) throws ServletException{
 
}
private static final Logger logger = Logger.getLogger(SecurityFilter.class);
 
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletResponse response = (HttpServletResponse) servletResponse;
loadSessionProxy(servletRequest);
filterChain.doFilter(servletRequest, response);
}
private static final String SESSION_IN_REQUEST_KEY = "UserSession";
@Override
public void init(FilterConfig filterConfig) throws ServletException {
 
public static UserSession loadSessionProxy(ServletRequest servletRequest) throws IOException, ServletException{
UserSession session = (UserSession) servletRequest.getAttribute(SESSION_IN_REQUEST_KEY);
}
 
try {
if(session == null) {
RegisterSession plugin;
plugin = (RegisterSession) PluginFactory.getPlugin(RegisterSession.class);
session = plugin.openSession(servletRequest);
servletRequest.setAttribute(SESSION_IN_REQUEST_KEY,session);
}
} catch (ClassNotFoundException | IllegalAccessException | InstantiationException e) {
logger.error(e,e);
return null;
}
return session;
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletResponse response = (HttpServletResponse) servletResponse;
loadSessionProxy(servletRequest);
filterChain.doFilter(servletRequest, response);
}
 
@Override
public void destroy() {
 
}
 
public static UserSession loadSessionProxy(ServletRequest servletRequest) throws IOException, ServletException {
 
UserSession session = (UserSession) servletRequest.getAttribute(SESSION_IN_REQUEST_KEY);
 
try {
if(session == null) {
RegisterSession plugin;
plugin = (RegisterSession) PluginFactory.getPlugin(RegisterSession.class);
session = plugin.openSession(servletRequest);
servletRequest.setAttribute(SESSION_IN_REQUEST_KEY,session);
}
} catch (ClassNotFoundException | IllegalAccessException | InstantiationException e) {
logger.error(e,e);
return null;
}
return session;
}
 
@Override
public void destroy() {
 
}
}
/es2018/18497/src/java/pt/estgp/es/exemplos/hibernate/web/rest/AbstractRestServlet.java
New file
0,0 → 1,150
package pt.estgp.es.exemplos.hibernate.web.rest;
 
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import pt.estgp.es.exemplos.hibernate.utils.StreamsUtils;
 
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
 
public abstract class AbstractRestServlet extends HttpServlet
{
 
 
 
public void addMessage(String mensagem, HttpServletRequest request)
{
List<String> messages = (List<String>) request.getAttribute("Messages");
messages.add(mensagem);
}
 
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
process(req,resp);
}
 
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
process(req,resp);
}
 
protected void process(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
{
 
 
req.setAttribute("Messages",new ArrayList<String>());
if(req.getContentType() != null && req.getContentType().equalsIgnoreCase("application/json"))
{
InputStream content = req.getInputStream();
if(content != null)
{
try {
ParseJsonRequestResult parseJsonRequestResult = new ParseJsonRequestResult(content).invoke();
invokeService(req, resp, parseJsonRequestResult.getService(), parseJsonRequestResult.getData());
} catch (Throwable e) {
sendErrorResponse(resp, e);
}
}
}
else
{
JSONObject response = new JSONObject();
try {
response.put("service","error");
response.put("response","REST REQUEST REQUIRED");
resp.setContentType("application/json");
PrintWriter pw = resp.getWriter();
pw.write(response.toString());
} catch (JSONException e) {
e.printStackTrace();
}
 
 
 
}
 
 
}
 
private void invokeService(HttpServletRequest req, HttpServletResponse resp, String service, JSONObject data) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException, JSONException, IOException {
Method innerMethod = this.getClass().getMethod(service,new Class[]{
JSONObject.class,
HttpServletRequest.class,
HttpServletResponse.class});
JSONObject obj = (JSONObject) innerMethod.invoke(this,new Object[]{data,req,resp});
 
JSONObject response = new JSONObject();
response.put("service","ok");
response.put("response",obj);
 
List<String> messages = (List<String>) req.getAttribute("Messages");
 
if(messages.size() > 0)
{
JSONArray msgs = new JSONArray();
for(String msgAdded: messages)
{
msgs.put(msgAdded);
}
response.put("messages",msgs);
}
 
resp.setContentType("application/json");
PrintWriter pw = resp.getWriter();
pw.write(response.toString());
}
 
private void sendErrorResponse(HttpServletResponse resp, Throwable e) throws IOException {
e.printStackTrace();
JSONObject response = new JSONObject();
try {
response.put("service","error");
response.put("exception",e.toString());
resp.setContentType("application/json");
PrintWriter pw = resp.getWriter();
pw.write(response.toString());
} catch (JSONException e1) {
e1.printStackTrace();
}
}
 
private class ParseJsonRequestResult {
private InputStream content;
private String service;
private JSONObject data;
 
public ParseJsonRequestResult(InputStream content) {
this.content = content;
}
 
public String getService() {
return service;
}
 
public JSONObject getData() {
return data;
}
 
public ParseJsonRequestResult invoke() throws IOException, JSONException {
JSONObject requestObj;
String json = StreamsUtils.readString(content);
requestObj = new JSONObject(json);
System.out.println("REQUEST JSON:");
System.out.println(requestObj.toString());
 
service = requestObj.getString("service");
data = requestObj.has("data") ? requestObj.getJSONObject("data") : null;
return this;
}
}
}
/es2018/18497/src/java/pt/estgp/es/exemplos/hibernate/DomainObject.java
4,10 → 4,10
 
public abstract class DomainObject {
 
public abstract void setSaveDate(Date d);
public abstract void setSaveDate(Date d);
 
public DomainObject(){
setSaveDate(new Date());
}
public DomainObject(){
setSaveDate(new Date());
}
 
}
/es2018/18497/src/gen/pt/estgp/es/exemplos/hibernate/Pagina.java
1,5 → 1,5
package pt.estgp.es.exemplos.hibernate;
// Generated 12/dez/2018 18:36:21 by Hibernate Tools 3.2.0.b9
// Generated 18/dez/2018 21:28:27 by Hibernate Tools 3.2.0.b9
 
 
import java.util.ArrayList;
/es2018/18497/src/gen/pt/estgp/es/exemplos/hibernate/UserSession.java
1,5 → 1,5
package pt.estgp.es.exemplos.hibernate;
// Generated 12/dez/2018 18:36:21 by Hibernate Tools 3.2.0.b9
// Generated 18/dez/2018 21:28:27 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/es2018/18497/src/gen/pt/estgp/es/exemplos/hibernate/Seccao.java
1,5 → 1,5
package pt.estgp.es.exemplos.hibernate;
// Generated 12/dez/2018 18:36:21 by Hibernate Tools 3.2.0.b9
// Generated 18/dez/2018 21:28:27 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/es2018/18497/src/gen/pt/estgp/es/exemplos/hibernate/User.java
1,5 → 1,5
package pt.estgp.es.exemplos.hibernate;
// Generated 12/dez/2018 18:36:21 by Hibernate Tools 3.2.0.b9
// Generated 18/dez/2018 21:28:27 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/es2018/18497/src/web/teste.jsp
1,4 → 1,4
<%@ page import="teste.Teste" %>
<%@ page import="pt.estgp.es.Teste" %>
<%@page language="java" contentType="UTF-8" %>
 
<%
/es2018/18497/src/web/login.jsp
1,4 → 1,4
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<div>
FORM DE AUTENTICACAO
 
</div>
/es2018/18497/src/web/layout1.jsp
20,21 → 20,26
<!-- JQUERY -->
<!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>
 
 
<script src="<%=request.getContextPath()%>/js/rest-layer.js"></script>
</head>
<body id="public">
<!-- HEADER -->
<tiles:insert attribute="header"/>
<!-- HEADER -->
<tiles:insert attribute="header"/>
 
<div class="panel panel-primary">
<div class="panel-heading">
<tiles:getAsString name="title"/>
<div class="panel panel-primary">
<div class="panel-heading">
<tiles:getAsString name="title"/>
</div>
<div class="panel-body">
<tiles:insert attribute="body"/>
</div>
</div>
<div class="panel-body">
<tiles:insert attribute="body"/>
</div>
</div>
 
<!-- FOOTER -->
<tiles:insert attribute="footer"/>
<!-- FOOTER -->
<tiles:insert attribute="footer"/>
</body>
</html:html>
/es2018/18497/src/web/listaPaginas.jsp
10,30 → 10,30
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/tlds/struts-tiles.tld" prefix="tiles" %>
<jsp:useBean id="UserSession" type="pt.estgp.es.exemplos.hibernate.UserSession"/>
 
<jsp:useBean id="UserSession" type="pt.estgp.es.exemplos.hibernate.UserSessionImpl" scope="request"/>
<ul><%-- Inicio de uma lista de HTML--%>
<%
//Zona de Java
<%
//Zona de Java
 
//Falta ligar ao Hibernate
//Falta fazer uma criteria e um .list()
//Falta ligar ao Hibernate
//Falta fazer uma criteria e um .list()
 
 
 
Session sess = HibernateUtils.getCurrentSession();
sess.beginTransaction();
//Query query = sess.createQuery("select p from p in class Pagina where p.nome like '%Teste%'");
List<Pagina> paginas = sess.createCriteria(Pagina.class).addOrder(Order.asc("nome")).list();
//List<Pagina> paginas = query.list();
Session sess = HibernateUtils.getCurrentSession();
sess.beginTransaction();
//Query query = sess.createQuery("select p from p in class Pagina where p.nome like '%Teste%'");
List<Pagina> paginas = sess.createCriteria(Pagina.class).addOrder(Order.asc("nome")).list();
//List<Pagina> paginas = query.list();
 
//Falta fazer um For a todos os objetos devolvidos no List
for(Pagina p: paginas)
{
//Falta fazer um For a todos os objetos devolvidos no List
for(Pagina p: paginas)
{
 
String nomeDaPagina = p.getNome();
long id = p.getId();
%>
String nomeDaPagina = p.getNome();
long id = p.getId();
%>
 
<li>
<a href="apresentaPagina.do?id=<%=id%>" target="_blank">
41,18 → 41,71
</a>
</li>
 
<%
//Zona de Java
<%
//Zona de Java
 
}
%>
}
%>
</ul><%-- Final de uma lista de HTML--%>
 
 
 
<script>
var app = angular.module('loginApp', []);
app.controller('loginAppController', function($scope) {
$scope.username= "";
$scope.password= "";
$scope.login = function(){
alert($scope.username);
alert($scope.password);
rest(
"<%=request.getContextPath()%>/ws/api/login",
"login",
{
username: $scope.username,
password: $scope.password
},
"#xpto",
function(resposta){
alert("ok:" + resposta.result);
},
function(resposta){
alert("ok:" + resposta);
}
);
}
 
 
});
</script>
 
<div id="xpto">
XPTO
<div class="web-messages"></div>
</div>
 
<div id="loginApp" ng-app="loginApp" ng-controller="loginAppController">
APP
<div class="web-messages"></div>
 
<pre>
user:{{username}} pass:{{password}}
</pre>
<div class="form">
<input type="hidden" name="dispatch" value="login">
Username: <input type="text" ng-model="username"/><br/>
Password: <input type="text" ng-model="password"/><br/>
<button type="button" class="btn btn-success" ng-click="login()">Login</button>
</div>
 
</div>
 
 
 
<html:form action="/login">
<input type="hidden" name="dispatch" value="login">
<input type="hidden" name="dispatch" value="login">
Nome: <html:text property="username"/><br/>
Data: <html:text property="password"/><br/>
<html:submit value="Submeter"/>
</html:form>
</html:form>
 
/es2018/18497/src/web/errors/500.jsp
File deleted
/es2018/18497/src/web/errors/403.jsp
1,20 → 1,8
<%--
Created by IntelliJ IDEA.
User: danif
Date: 13/11/2018
Time: 11:48
To change this template use File | Settings | File Templates.
--%>
<%@ page import="teste.Teste" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="pt.estgp.es.Teste" %>
<%@page language="java" contentType="UTF-8" %>
 
<% request.getSession().setAttribute("user", u); %>
<%
 
<html>
<head>
<title>Title</title>
</head>
<body>
Nao autorizado
</body>
</html>
request.getSession().setAttribute("user",u);
%>
Nao autorizado
/es2018/18497/src/web/errors/404.jsp
1,17 → 1,4
<%--
Created by IntelliJ IDEA.
User: danif
Date: 13/11/2018
Time: 11:47
To change this template use File | Settings | File Templates.
--%>
<%@ page import="teste.Teste" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
Pagina nao encontrada
</body>
</html>
<%@ page import="pt.estgp.es.Teste" %>
<%@page language="java" contentType="UTF-8" %>
 
POagina nao encontrada
/es2018/18497/src/web/js/rest-layer.js
New file
0,0 → 1,47
function rest(restAction,serviceName,data,webMessagesContainer,handlerOk,handlerFail)
{
var request =
{
data : data,
service : serviceName
};
 
$.ajax({
url: restAction,
type: "POST",
contentType: "application/json",
data: JSON.stringify(request),
dataType: "json",
 
success: function(resposta)
{
 
$(webMessagesContainer).find(".web-messages").html("");
if(resposta.service == "error")
{
$(webMessagesContainer).find(".web-messages").html('<div class="alert alert-danger">' + resposta.exception + '</div>');
if(handlerFail != undefined)
{
handlerFail(resposta.exception);
}
 
}
else if(resposta.service == "ok")
{
for(var msg in resposta.messages)
{
$(webMessagesContainer).find(".web-messages").append('<div class="alert alert-success">' + resposta.messages[msg] + '</div>');
}
if(handlerOk != undefined)
handlerOk(resposta.response);
}
},
error: function(resposta) {
$(webMessagesContainer).find(".web-messages").html('<div class="alert alert-danger">Erro de comunicação, por favor tente novamente</div>');
if(handlerFail != undefined)
{
handlerFail(resposta);
}
}
});
}
/es2018/18497/src/web/apresentaPagina.jsp
16,54 → 16,60
<title></title>
</head>
<body>
<%
if(UserSession.getUser() != null)
{
 
}
%>
Olá ${UserSession.user.nome} estamos a ver uma página.
 
<%
<%
 
pt.estgp.es.exemplos.hibernate.UserSession sess = SecurityFilter.loadSessionProxy(request);
String id = request.getParameter("id");
HibernateUtils.getCurrentSession().beginTransaction();
 
Long idLong = id != null ? new Long(id) : (Long) request.getAttribute("id");
pt.estgp.es.exemplos.hibernate.UserSession sess = SecurityFilter.loadSessionProxy(request);
String id = request.getParameter("id");
HibernateUtils.getCurrentSession().beginTransaction();
 
Long idLong = id != null ? new Long(id) : (Long) request.getAttribute("id");
 
 
Pagina p = (Pagina) HibernateUtils.getCurrentSession().load(Pagina.class,idLong);
 
%>
Pagina p = (Pagina) HibernateUtils.getCurrentSession().load(Pagina.class,idLong);
 
<h1><%=p.getNome()%> </h1>
%>
 
<form action="<%=request.getContextPath()%>/paginas" method="post">
<h1><%=p.getNome()%> </h1>
 
<input type="hidden" name="idPagina" value="<%=idLong%>"/>
<form action="<%=request.getContextPath()%>/paginas" method="post">
 
Adicionar Seccao<br/>
<input type="text" name="titulo">
<input type="hidden" name="idPagina" value="<%=idLong%>"/>
 
Adicionar Seccao<br/>
<input type="text" name="titulo">
 
<button type="submit">Criar</button>
 
</form>
<button type="submit">Criar</button>
 
<%
for(Seccao s: p.getSeccoes())
{
</form>
 
<%
for(Seccao s: p.getSeccoes())
{
 
%>
<h2><%=s.getTitulo()%>
<a href="<%=request.getContextPath()%>/paginasDelete?idSeccao=<%=s.getId()%>">
APAGAR
</a>
 
</h2>
<%
}
%>
<h2><%=s.getTitulo()%>
<a href="<%=request.getContextPath()%>/paginasDelete?idSeccao=<%=s.getId()%>">
APAGAR
</a>
 
HibernateUtils.getCurrentSession().getTransaction().rollback();
%>
</h2>
<%
}
 
HibernateUtils.getCurrentSession().getTransaction().rollback();
%>
 
</body>
</html>
/es2018/18497/libs.xml
22,6 → 22,9
<fileset dir="lib/log4j">
<include name="*.jar" />
</fileset>
<fileset dir="lib/json">
<include name="*.jar" />
</fileset>
<fileset dir="lib/hibernate/mysql">
<include name="*.jar" />
</fileset>
50,61 → 53,61
<!--<taskdef name="tomcat.reload" classname="org.apache.catalina.ant.ReloadTask" classpathref="pathref" />-->
<!--<taskdef name="tomcat.start" classname="org.apache.catalina.ant.StartTask" classpathref="pathref" />-->
<!--<taskdef name="tomcat.stop" classname="org.apache.catalina.ant.StopTask" classpathref="pathref" />-->
<!--<taskdef name="tomcat.install" classname="org.apache.catalina.ant.InstallTask" classpathref="pathref"/>-->
<!--<taskdef name="tomcat.install" classname="org.apache.catalina.ant.InstallTask" classpathref="pathref"/>-->
 
<!--&lt;!&ndash;-->
<!--<property name="user" value="${tomcat.user}"/>-->
<!--&lt;!&ndash;-->
<!--<property name="user" value="${tomcat.user}"/>-->
<!--<property name="pass" value="${tomcat.pass}"/>-->
<!--&ndash;&gt;-->
<!--<property name="user" value="admin"/>-->
<!--<property name="pass" value="admin"/>-->
<!---->
 
<!--<target name="tomcat.deployContext" depends="build.war">-->
<!--<echo message="${tomcat.manager} username: ${user} password: ${pass}"/>-->
<!--<tomcat.install url="${tomcat.manager}" path="${tomcat.context.path.install}"-->
<!--config="file://${basedir}/build/ant/project.xml"-->
<!--username="${user}" password="${pass}" />-->
<!--</target>-->
<!--<target name="tomcat.redeployContext" depends="tomcat.undeploy,build.war" >-->
<!--<echo message="${tomcat.manager}"/>-->
<!--<tomcat.install url="${tomcat.manager}" path="${tomcat.context.path.install}"-->
<!--config="file:/${basedir}/build/ant/project.xml"-->
<!--username="${user}" password="${pass}" />-->
<!--</target>-->
<!---->
<!--<target name="tomcat.deploy" depends="build.war" >-->
<!--<echo message="${tomcat.manager}"/>-->
<!--<tomcat.deploy url="${tomcat.manager}" path="${tomcat.context.path.install}"-->
<!--war="file:/${basedir}/build/ant/${tomcat.war.filename}"-->
<!--username="${user}" password="${pass}" />-->
<!--</target>-->
<!--<target name="tomcat.redeploy" depends="tomcat.undeploy,build.war">-->
<!--<echo message="${tomcat.manager}"/>-->
<!--<tomcat.deploy url="${tomcat.manager}" path="${tomcat.context.path.install}"-->
<!--war="file:/${basedir}/build/ant/${tomcat.war.file}"-->
<!--username="${user}" password="${pass}" />-->
<!--</target>-->
<!--<target name="tomcat.undeploy">-->
<!--<echo message="${tomcat.manager}"/>-->
<!--<tomcat.undeploy url="${tomcat.manager}" path="${tomcat.context.path.install}"-->
<!--username="${user}" password="${pass}" />-->
<!--</target>-->
<!--<target name="tomcat.reload">-->
<!--<echo message="${tomcat.manager}"/>-->
<!--<tomcat.reload url="${tomcat.manager}" path="${tomcat.context.path.install}"-->
<!--username="${user}" password="${pass}" />-->
<!--</target>-->
<!--<target name="tomcat.start">-->
<!--<echo message="${tomcat.manager}"/>-->
<!--<tomcat.start url="${tomcat.manager}" path="${tomcat.context.path.install}"-->
<!--username="${user}" password="${pass}" />-->
<!--</target>-->
<!--<target name="tomcat.stop">-->
<!--<echo message="${tomcat.manager}"/>-->
<!--<tomcat.stop url="${tomcat.manager}" path="${tomcat.context.path.install}"-->
<!--username="${user}" password="${pass}" />-->
<!--</target>-->
<!--<target name="tomcat.deployContext" depends="build.war">-->
<!--<echo message="${tomcat.manager} username: ${user} password: ${pass}"/>-->
<!--<tomcat.install url="${tomcat.manager}" path="${tomcat.context.path.install}"-->
<!--config="file://${basedir}/build/ant/project.xml"-->
<!--username="${user}" password="${pass}" />-->
<!--</target>-->
<!--<target name="tomcat.redeployContext" depends="tomcat.undeploy,build.war" >-->
<!--<echo message="${tomcat.manager}"/>-->
<!--<tomcat.install url="${tomcat.manager}" path="${tomcat.context.path.install}"-->
<!--config="file:/${basedir}/build/ant/project.xml"-->
<!--username="${user}" password="${pass}" />-->
<!--</target>-->
<!---->
<!--<target name="tomcat.deploy" depends="build.war" >-->
<!--<echo message="${tomcat.manager}"/>-->
<!--<tomcat.deploy url="${tomcat.manager}" path="${tomcat.context.path.install}"-->
<!--war="file:/${basedir}/build/ant/${tomcat.war.filename}"-->
<!--username="${user}" password="${pass}" />-->
<!--</target>-->
<!--<target name="tomcat.redeploy" depends="tomcat.undeploy,build.war">-->
<!--<echo message="${tomcat.manager}"/>-->
<!--<tomcat.deploy url="${tomcat.manager}" path="${tomcat.context.path.install}"-->
<!--war="file:/${basedir}/build/ant/${tomcat.war.file}"-->
<!--username="${user}" password="${pass}" />-->
<!--</target>-->
<!--<target name="tomcat.undeploy">-->
<!--<echo message="${tomcat.manager}"/>-->
<!--<tomcat.undeploy url="${tomcat.manager}" path="${tomcat.context.path.install}"-->
<!--username="${user}" password="${pass}" />-->
<!--</target>-->
<!--<target name="tomcat.reload">-->
<!--<echo message="${tomcat.manager}"/>-->
<!--<tomcat.reload url="${tomcat.manager}" path="${tomcat.context.path.install}"-->
<!--username="${user}" password="${pass}" />-->
<!--</target>-->
<!--<target name="tomcat.start">-->
<!--<echo message="${tomcat.manager}"/>-->
<!--<tomcat.start url="${tomcat.manager}" path="${tomcat.context.path.install}"-->
<!--username="${user}" password="${pass}" />-->
<!--</target>-->
<!--<target name="tomcat.stop">-->
<!--<echo message="${tomcat.manager}"/>-->
<!--<tomcat.stop url="${tomcat.manager}" path="${tomcat.context.path.install}"-->
<!--username="${user}" password="${pass}" />-->
<!--</target>-->
 
 
</project>
/es2018/18497/build.properties
24,11 → 24,23
web.path=/${app.path}
tomcat.context.path.install=/${app.path}
 
 
 
 
 
 
 
 
build.dir.classes=build/ant/classes
 
 
##database configuration
hibernate.show.sql=false
database.host=localhost
database.port=3306
database.catalog=teste
database.username=root
database.password=root
database.connection.url=jdbc:mysql://${database.host}:${database.port}/${database.catalog}?useUnicode=true&amp;characterEncoding=UTF-8&amp;autoReconnect=true
database.connection.url=jdbc:mysql://${database.host}:${database.port}/${database.catalog}?useUnicode=true&amp;characterEncoding=UTF-8&amp;autoReconnect=true
 
pt.estgp.es.exemplos.hibernate.web.pluginSession.RegisterSession=pt.estgp.es.exemplos.hibernate.web.pluginSession.ServerRegisterSession
/es2018/18497/metricas-desenho-ckjm.txt
1,17 → 1,17
WMC DIT NOC CBO RFC LCOM Ce NPM.
 
pt.estgp.es.exemplos.hibernate.security.SecurityContextProvider 6 1 0 1 14 7 3 4
pt.estgp.es.exemplos.hibernate.UserSession 10 0 1 2 11 33 7 10
pt.estgp.es.exemplos.hibernate.UserSession 10 0 1 2 11 33 9 10
pt.estgp.es.exemplos.hibernate.security.logic.AccessDeniedException 5 2 2 0 10 10 2 5
pt.estgp.es.exemplos.hibernate.web.login.LoginForm 5 0 0 1 6 6 1 5
pt.estgp.es.exemplos.hibernate.web.pluginSession.ServerRegisterSession 2 1 0 3 7 1 0 2
pt.estgp.es.exemplos.hibernate.UserImpl 1 0 0 1 2 0 0 1
pt.estgp.es.exemplos.hibernate.web.rest.AbstarctRestServelet 4 0 0 0 7 6 0 1
pt.estgp.es.exemplos.hibernate.security.SecuritySessionContext 6 1 0 0 8 0 4 5
pt.estgp.es.exemplos.hibernate.web.pluginSession.DevelopRegisterSession 2 1 0 9 17 1 0 2
pt.estgp.es.exemplos.hibernate.security.logic.SecurityAspects 11 1 0 13 39 55 0 10
pt.estgp.es.exemplos.hibernate.web.pluginSession.DevelopRegisterSession 2 1 0 9 18 1 0 2
pt.estgp.es.exemplos.hibernate.security.logic.SecurityAspects 11 1 0 16 48 43 0 10
pt.estgp.es.exemplos.hibernate.security.logic.JointPointUtils 2 1 0 4 8 1 1 2
teste.teste2 2 1 0 0 3 1 0 2
pt.estgp.es.exemplos.hibernate.web.PaginasDeleteServlet 3 3 0 1 11 3 0 1
pt.estgp.es.exemplos.hibernate.web.PaginasDeleteServlet 3 0 0 1 11 3 0 1
pt.estgp.es.exemplos.hibernate.utils.StreamsUtils 9 1 0 1 31 36 1 9
pt.estgp.es.exemplos.hibernate.DomainObject 2 1 4 0 4 1 4 2
pt.estgp.es.exemplos.hibernate.web.HibernateStarterListener 9 1 0 3 13 34 0 8
pt.estgp.es.exemplos.hibernate.services.ServicoPaginas 4 1 0 7 22 6 2 3
19,23 → 19,27
pt.estgp.es.exemplos.hibernate.security.logic.HasRole 1 1 0 0 1 0 1 1
pt.estgp.es.exemplos.hibernate.web.login.LoginAction 2 0 0 5 7 1 0 2
pt.estgp.es.exemplos.hibernate.SeccaoImpl 1 0 0 1 2 0 2 1
pt.estgp.es.exemplos.hibernate.utils.BytesUtils 19 1 0 2 58 149 1 17
pt.estgp.es.exemplos.hibernate.web.login.LoginRest 3 0 0 8 16 3 0 3
pt.estgp.es.exemplos.hibernate.web.UserFilter 4 1 0 5 16 6 0 4
pt.estgp.es.exemplos.hibernate.security.example.ServiceExample 3 1 0 0 8 3 0 3
pt.estgp.es.exemplos.hibernate.HibernateUtils 6 1 0 5 18 13 9 4
pt.estgp.es.exemplos.hibernate.security.logic.NotAuthenticatedException 5 0 0 1 10 10 0 5
pt.estgp.es.exemplos.hibernate.web.PaginasServlet 3 3 0 1 11 3 1 1
pt.estgp.es.exemplos.hibernate.web.SecurityFilter 6 1 0 4 14 13 0 5
pt.estgp.es.exemplos.hibernate.web.rest.AbstractRestServlet$ParseJsonRequestResult 4 1 0 4 12 0 1 4
pt.estgp.es.exemplos.hibernate.HibernateUtils 7 1 0 7 21 19 10 5
pt.estgp.es.exemplos.hibernate.security.logic.NotAuthenticatedException 5 0 0 1 10 10 1 5
pt.estgp.es.exemplos.hibernate.web.PaginasServlet 3 0 0 1 11 3 1 1
pt.estgp.es.exemplos.hibernate.web.SecurityFilter 6 1 0 4 14 13 1 5
pt.estgp.es.exemplos.hibernate.security.logic.FailRoleException 5 0 0 1 10 10 1 5
pt.estgp.es.exemplos.hibernate.Pagina 13 0 1 2 15 62 5 13
pt.estgp.es.exemplos.hibernate.Main 2 1 0 10 32 1 0 2
pt.estgp.es.exemplos.hibernate.web.rest.AbstractRestServlet 7 0 1 4 37 21 2 2
pt.estgp.es.exemplos.hibernate.Seccao 11 0 1 2 12 45 3 11
pt.estgp.es.exemplos.hibernate.UserSessionImpl 1 0 0 1 2 0 2 1
teste.Teste 2 1 0 0 3 1 0 2
pt.estgp.es.exemplos.hibernate.services.ServicoSessoes 2 1 0 6 10 1 1 2
pt.estgp.es.exemplos.hibernate.services.ServicoSessoes 2 1 0 6 11 1 1 2
pt.estgp.es.exemplos.hibernate.security.logic.PrintParameterExample 1 1 0 0 1 0 1 1
pt.estgp.es.exemplos.hibernate.web.pluginSession.PluginFactory 3 1 0 0 12 1 1 2
teste.TesteDomainObject 4 0 0 6 25 6 0 2
pt.estgp.es.exemplos.hibernate.web.pluginSession.RegisterSession 1 1 0 1 1 0 3 1
pt.estgp.es.exemplos.hibernate.User 21 0 1 1 22 190 5 21
pt.estgp.es.exemplos.hibernate.User 21 0 1 1 22 190 6 21
pt.estgp.es.exemplos.hibernate.security.logic.IsAuthenticated 0 1 0 0 0 0 0 0
pt.estgp.es.exemplos.hibernate.security.logic.Transaction 0 1 0 0 0 0 0 0
/es2018/18497/build.xml
31,7 → 31,7
 
 
<copy file="conf/hibernate.cfg.xml" todir="build/ant/classes/pt/estgp/es/exemplos/hibernate"/>
<copy file="conf/web/plugins.properties" todir="build/ant/classes/"/>
<copy file="conf/plugins.properties" todir="build/ant/classes/"/>
 
<copy file="conf/log4j.properties" todir="build/ant/classes"/>
<copy todir="build/ant/classes">
66,6 → 66,14
 
</target>
 
<target name="copyJsps">
<copy todir="build/ant/war">
<fileset dir="src/web">
<include name="**/*.*"/>
</fileset>
</copy>
</target>
 
<target name="build.war" depends="compile">
<delete dir="build/ant/war"/>
<mkdir dir="build/ant/war"/>
112,6 → 120,9
<fileset dir="lib/log4j">
<include name="*.*"/>
</fileset>
<fileset dir="lib/json">
<include name="*.*"/>
</fileset>
<fileset dir="lib/hibernate/hibernate3">
<include name="*.*"/>
</fileset>
122,27 → 133,44
<delete file="build/ant/${tomcat.war.filename}"/>
<jar destfile="build/ant/${tomcat.war.filename}">
<fileset dir="build/ant/war">
<include name="**/*.*"/>
<include name="**/*.*"/>
</fileset>
</jar>
 
<!--<copy file="build/ant/${tomcat.war.filename}" todir="${tomcat.home}/webapps" overwrite="true"/>-->
 
</target>
 
<target name="create.context.tomcat.file">
<copy file="conf/tomcat/project.xml" todir="build/ant" overwrite="true"/>
<replace file="build/ant/project.xml">
<replacefilter token="@build.dir.war@" value="${basedir}${file.separator}build${file.separator}ant${file.separator}war${file.separator}"/>
<replacefilter token="@context.path@" value="${web.path}"/>
</replace>
<replacefilter token="@build.dir.war@" value="${basedir}${file.separator}build${file.separator}ant${file.separator}war${file.separator}"/>
<replacefilter token="@context.path@" value="${web.path}"/>
</replace>
</target>
 
<target name="testar" depends="compile">
<java classname="pt.estgp.es.exemplos.hibernate.Main" classpath="build/ant/classes" classpathref="pathref"/>
</target>
 
 
 
 
 
 
 
 
 
 
 
 
<!--
==========================================================================================
GENERATE SQL SCRIPTS
==========================================================================================
-->
 
 
<target name="generateUpdateHibernateSql" depends="compile">
<schemaupdate
properties="build/ant/classes/pt/estgp/es/exemplos/hibernate/jdbc.properties"
183,6 → 211,14
 
</target>
 
 
 
 
 
 
 
 
 
<target name="generateMetrics">
<taskdef name="ckjm" classname="gr.spinellis.ckjm.ant.CkjmTask">
<classpath>
203,4 → 239,5
</target>
 
 
 
</project>