AdminBean.java

package com.popx.modello;

/*@
  @ invariant this.getRole() == null
  @        || this.getRole().equals("Admin");
@*/
public class AdminBean extends UserBean {

    /*@
     @ ensures this.getUsername() == null
     @      && this.getEmail() == null
     @      && this.getPassword() == null
     @      && this.getRole() == null;

     */

    public AdminBean() {}

    /*@
      @ also
      @ requires username != null && !username.isEmpty();

      @ requires email != null;
      @ requires !email.isEmpty();
      @ requires email.contains("@");
      @ requires email.indexOf('@') > 0;
      @ requires email.substring(email.indexOf('@') + 1).contains(".");
      @ requires email.indexOf('.') > email.indexOf('@') + 1;
      @ requires email.lastIndexOf('.') < email.length() - 1;

      @ requires password != null;
      @ requires password.length() >= 8 && password.length() <= 16;
      @ requires (\exists int i; 0 <= i && i < password.length();
                    Character.isLowerCase(password.charAt(i)));
      @ requires (\exists int i; 0 <= i && i < password.length();
                    Character.isUpperCase(password.charAt(i)));
      @ requires (\exists int i; 0 <= i && i < password.length();
                    Character.isDigit(password.charAt(i)));

      @ requires role != null;
      @ requires role.equals("Admin");

      @ ensures this.getUsername().equals(username)
      @      && this.getEmail().equals(email)
      @      && this.getPassword().equals(password)
      @      && this.getRole().equals("Admin");
    @*/
    public AdminBean(String username, String email, String password, String role) {
        super(username, password, email, role);
    }

}