Subversion Repositories bacoAlunos

Compare Revisions

Ignore whitespace Rev 2005 → Rev 2060

/es2018/17210/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/17210/src/java/pt/estgp/es/exemplos/hibernate/PaginaImpl.java
1,26 → 1,35
package pt.estgp.es.exemplos.hibernate;
 
import java.util.List;
import java.util.Objects;
 
public class PaginaImpl extends Pagina {
 
public static void main(String [] args){
new PaginaImpl();
public static void main(String [] args)
{
 
System.out.println("new PaginaImpl().getSaveDate().toString() = " + new PaginaImpl().getSaveDate().toString());
 
HibernateUtils.getCurrentSession().beginTransaction();
 
Pagina p2=new PaginaImpl();
Pagina p2 = new PaginaImpl();
p2.setNome("Teste 2");
 
HibernateUtils.getCurrentSession().save(p2);
List<Pagina> ps= HibernateUtils.getCurrentSession().createCriteria(Pagina.class).list();
 
for (Pagina p:ps) {
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();
 
HibernateUtils.getCurrentSession().getTransaction().commit();
 
}
 
 
 
 
 
 
 
 
}
/es2018/17210/src/java/pt/estgp/es/exemplos/hibernate/Seccao.hbm.xml
4,7 → 4,7
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
 
<hibernate-mapping>
<class name="pt.estgp.es.exemplos.hibernate.Seccao" table="seccao" >
<class name="pt.estgp.es.exemplos.hibernate.Seccao" table="seccao">
<meta attribute="scope-class">public abstract</meta>
<meta attribute="extends">DomainObject</meta>
<id name="id" type="long">
12,14 → 12,11
</id>
<discriminator column="discriminator"/>
<timestamp source="db" name="updateDate"/>
 
<property name="saveDate" type="timestamp"/>
<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"/>
 
 
 
 
<subclass name="pt.estgp.es.exemplos.hibernate.SeccaoImpl" discriminator-value="SeccaoImpl"/>
</class>
</hibernate-mapping>
/es2018/17210/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/17210/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">
13,19 → 13,13
<discriminator column="discriminator"/>
<timestamp source="db" name="updateDate"/>
<property name="saveDate" type="timestamp"/>
<property name="admin" type="boolean" />
<property name="nome" type="string" />
<property name="telemovel" type="string" />
<property name="email" type="string" />
<property name="username" type="string" />
<property name="password" type="string"/>
<property name="admin" type="boolean"/>
<property name="telemovel" type="string"/>
<property name="email" type="string"/>
<property name="roles" type="string"/>
<property name="password" type="string" />
<property name="roles" type="string" />
<subclass name="pt.estgp.es.exemplos.hibernate.UserImpl" discriminator-value="UserImpl"/>
<!--<many-to-one name="pagina" class="pt.estgp.es.exemplos.hibernate.Pagina" column="pagina_id" outer-join="true" cascade="none"/>
-->
 
 
 
 
</class>
</hibernate-mapping>
</hibernate-mapping>
/es2018/17210/src/java/pt/estgp/es/exemplos/hibernate/Pagina.hbm.xml
7,7 → 7,6
<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>
15,20 → 14,12
<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" column="user_id" outer-join="true" cascade="none"/>
 
<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">
<!--<subclass name="pt.estgp.es.exemplos.hibernate.PaginaAdmin">-->
<!--<meta attribute="scope-class">public abstract</meta>-->
<!--<property name="xtpo" type="string"/>-->
<!--<subclass name="pt.estgp.es.exemplos.hibernate.PaginaAdminImpl" discriminator-value="PaginaAdminImpl"-->
<!--</subclass>-->
 
</subclass>
<subclass name="pt.estgp.es.exemplos.hibernate.PaginaImpl" discriminator-value="PaginaImpl"/>
</class>
</hibernate-mapping>
/es2018/17210/src/java/pt/estgp/es/exemplos/hibernate/services/ServicoPaginas.java
5,16 → 5,26
import pt.estgp.es.exemplos.hibernate.Pagina;
import pt.estgp.es.exemplos.hibernate.Seccao;
import pt.estgp.es.exemplos.hibernate.SeccaoImpl;
import pt.estgp.es.exemplos.hibernate.servicecontrol.ServiceAnnotation;
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.Transaction;
import pt.estgp.es.exemplos.hibernate.web.PaginasServlet;
 
import javax.servlet.ServletException;
 
public class ServicoPaginas
{
 
private static final Logger logger = Logger.getLogger(ServicoPaginas.class);
 
@ServiceAnnotation
@Transaction @IsAuthenticated @HasRole(role = "admin")
public void criaSeccaoService(String idPagina, String titulo)
{
try {
new PaginasServlet().init();
} catch (ServletException e) {
e.printStackTrace();
}
Pagina p = (Pagina) HibernateUtils.getCurrentSession().load(Pagina.class,new Long(idPagina));
Seccao seccao = new SeccaoImpl();
seccao.setTitulo(titulo);
24,4 → 34,20
 
HibernateUtils.getCurrentSession().save(seccao);
}
 
@Transaction @IsAuthenticated @HasRole(role = "admin")
public long deleteSeccaoService(String 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/17210/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">
11,15 → 11,9
<generator class="assigned" />
</id>
<discriminator column="discriminator"/>
 
<timestamp source="db" name="updateDate"/>
<property name="saveDate" type="timestamp"/>
<many-to-one name="user" class="pt.estgp.es.exemplos.hibernate.User" column="user_id" outer-join="true" cascade="none"/>
<many-to-one name="user" class="pt.estgp.es.exemplos.hibernate.User"/>
<subclass name="pt.estgp.es.exemplos.hibernate.UserSessionImpl" discriminator-value="UserSessionImpl"/>
 
 
 
 
 
</class>
</hibernate-mapping>
</hibernate-mapping>
/es2018/17210/src/java/pt/estgp/es/exemplos/hibernate/security/SecurityContextProvider.java
11,7 → 11,7
 
private static SecurityContextProvider singletonInstance = new SecurityContextProvider();
 
private Map<Thread, SecuritySessionContext> sessions = new HashMap<Thread,SecuritySessionContext>();
private Map<Thread,SecuritySessionContext> sessions = new HashMap<Thread,SecuritySessionContext>();
 
private SecurityContextProvider(){}
 
/es2018/17210/src/java/pt/estgp/es/exemplos/hibernate/web/UserFilter.java
5,7 → 5,7
import pt.estgp.es.exemplos.hibernate.HibernateUtils;
import pt.estgp.es.exemplos.hibernate.User;
import pt.estgp.es.exemplos.hibernate.UserSession;
import pt.estgp.es.exemplos.hibernate.UserSessionImpl;
import pt.estgp.es.exemplos.hibernate.security.SecurityContextProvider;
 
import javax.servlet.*;
import javax.servlet.http.Cookie;
16,8 → 16,6
import static org.hibernate.criterion.Restrictions.*;
 
public class UserFilter implements Filter {
 
 
@Override
public void init(FilterConfig filterConfig) throws ServletException {
 
26,51 → 24,22
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletResponse response = (HttpServletResponse) servletResponse;
response.sendError(500);
//response.sendError(403);
 
HttpServletRequest request = (HttpServletRequest) servletRequest;
HibernateUtils.getCurrentSession().beginTransaction();
 
User user = (User) HibernateUtils.getCurrentSession().createCriteria(User.class)
.createAlias("user","u")
.add(like("u.nome","%17210%"))
.add(eq("username", "17210")) //alt+enter eq() ->Restriction.eq
.add(eq("password","123"))
.add(or(eq("u.nome","%17210%"), not(eq("password","123"))))
.add(like("username", "%17210%"))
.addOrder(Order.asc("username"))
.uniqueResult();
System.out.println(request.getSession().getId());
 
/*User user = (User) c.add(eq("username", "17210")) //alt+enter eq() ->Restriction.eq
.add(eq("password","123")).uniqueResult(); */
User u = null;
HibernateUtils.getCurrentSession().beginTransaction();
UserSession session = (UserSession) HibernateUtils.getCurrentSession().load(UserSession.class, request.getSession().getId());
 
try{
UserSession 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);
}
u=session.getUser();
}
User u = session.getUser();
if(u != null)
filterChain.doFilter(servletRequest,response);
 
catch (Exception e)
{
UserSession session = new UserSessionImpl();
session.setCookie(request.getSession().getId());
HibernateUtils.getCurrentSession().save(session);
}
System.out.println(request.getSession().getId());
 
HibernateUtils.getCurrentSession().getTransaction().commit();
if(u!=null /*&& u.isAdmin()*/)
filterChain.doFilter(servletRequest, response);
else
filterChain.doFilter(servletRequest, response);
 
filterChain.doFilter(servletRequest, servletResponse);
response.sendError(403);
HibernateUtils.getCurrentSession().getTransaction().rollback();
}
 
@Override
/es2018/17210/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
{
14,6 → 18,7
String idPagina = request.getParameter("idPagina");
 
 
 
new ServicoPaginas().criaSeccaoService(idPagina,titulo);
 
 
/es2018/17210/src/java/pt/estgp/es/exemplos/hibernate/web/login/LoginAction.java
13,9 → 13,9
public class LoginAction extends DispatchAction
{
public ActionForward login(ActionMapping mapping,
ActionForm form ,
HttpServletRequest request,
HttpServletResponse response)
ActionForm form ,
HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException
{
 
33,4 → 33,4
 
}
 
}
}
/es2018/17210/src/java/pt/estgp/es/exemplos/hibernate/web/login/LoginForm.java
25,4 → 25,4
public void setPassword(String password) {
this.password = password;
}
}
}
/es2018/17210/src/java/pt/estgp/es/exemplos/hibernate/web/PaginasDeleteServlet.java
1,7 → 1,9
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;
 
14,24 → 16,10
 
String idSeccao = request.getParameter("idSeccao");
 
HibernateUtils.getCurrentSession().beginTransaction();
 
Seccao seccao = (Seccao) HibernateUtils.getCurrentSession().load(Seccao.class,new Long(idSeccao));
long idPagina = new ServicoPaginas().deleteSeccaoService(idSeccao);
 
 
 
Long idPagina = seccao.getPagina().getId();
 
seccao.getPagina().getSeccoes().remove(seccao);
seccao.setPagina(null);
HibernateUtils.getCurrentSession().delete(seccao);
 
HibernateUtils.getCurrentSession().getTransaction().commit();
 
 
 
request.setAttribute("id",idPagina);
 
request.getRequestDispatcher("apresentaPagina.jsp").forward(request,response);
}
 
/es2018/17210/src/java/pt/estgp/es/exemplos/hibernate/DomainObject.java
10,5 → 10,4
setSaveDate(new Date());
}
 
 
}