/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"/>--> |
<!--<!–--> |
<!--<property name="user" value="${tomcat.user}"/>--> |
<!--<!–--> |
<!--<property name="user" value="${tomcat.user}"/>--> |
<!--<property name="pass" value="${tomcat.pass}"/>--> |
<!--–>--> |
<!--<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&characterEncoding=UTF-8&autoReconnect=true |
database.connection.url=jdbc:mysql://${database.host}:${database.port}/${database.catalog}?useUnicode=true&characterEncoding=UTF-8&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> |