/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()); |
} |
} |