/* * JBoss, Home of Professional Open Source. * * See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing. * * See the AUTHORS.txt file distributed with this work for a full listing of individual contributors. */ package org.teiid.designer.roles; /** * @author blafond * */ public class Crud { @SuppressWarnings("javadoc") public enum Type { CREATE, READ, UPDATE, DELETE, EXECUTE, ALTER } /** * CRUD + Execute + Alter boolean values */ @SuppressWarnings("javadoc") public Boolean c, r, u, d, e, a; public Crud() { super(); } /** * @param c * @param r * @param u * @param d * @param e * @param a */ public Crud(Boolean c, Boolean r, Boolean u, Boolean d, Boolean e, Boolean a) { super(); this.c = c; this.r = r; this.u = u; this.d = d; this.e = e; this.a = a; } /** * @param crud */ public Crud(Crud crud) { this(crud.c, crud.r, crud.u, crud.d, crud.e, crud.a); } /** * @param obj * @return if equivalent */ public boolean equivalent(Object obj) { if( obj instanceof Crud ) { Crud target = (Crud)obj; if( !areSameState(this.c, target.c) ) return false; if( !areSameState(this.r, target.r) ) return false; if( !areSameState(this.u, target.u) ) return false; if( !areSameState(this.d, target.d) ) return false; if( !areSameState(this.e, target.e) ) return false; if( !areSameState(this.a, target.a) ) return false; } return super.equals(obj); } private boolean areSameState(Boolean a, Boolean b ) { if( (a == null && b == null) || (a == null && b == Boolean.FALSE) || (b == null && a == Boolean.FALSE) ) { return true; } return false; } private boolean areSameBooleanValues(Boolean a, Boolean b ) { if( (a == null && b == null) || (a == Boolean.FALSE && b == Boolean.FALSE) || (a == Boolean.TRUE && b == Boolean.TRUE) ) { return true; } return false; } /** * @param target * @return if same */ public boolean isSameAs(Crud target) { if( areSameBooleanValues(this.c, target.c) && areSameBooleanValues(this.r, target.r) && areSameBooleanValues(this.u, target.u) && areSameBooleanValues(this.d, target.d) && areSameBooleanValues(this.e, target.e) && areSameBooleanValues(this.a, target.a) ) { return true; } return false; } /** * @param value * @return CRUD type */ public static Crud.Type getCrudType(int value ) { if( value == 2 ) { return Crud.Type.CREATE; } if( value == 3 ) { return Crud.Type.READ; } if( value == 4 ) { return Crud.Type.UPDATE; } if( value == 5 ) { return Crud.Type.DELETE; } if( value == 6 ) { return Crud.Type.EXECUTE; } if( value == 7 ) { return Crud.Type.ALTER; } return null; } /** (non-Javadoc) * @see java.lang.Object#toString() */ @Override public String toString() { StringBuilder sb = new StringBuilder("Crud: "); //$NON-NLS-1$ sb.append("\n\t").append("c = " + c.booleanValue()); //$NON-NLS-1$ //$NON-NLS-2$ sb.append("\n\t").append("r = " + r.booleanValue()); //$NON-NLS-1$ //$NON-NLS-2$ sb.append("\n\t").append("u = " + u.booleanValue()); //$NON-NLS-1$ //$NON-NLS-2$ sb.append("\n\t").append("d = " + d.booleanValue()); //$NON-NLS-1$ //$NON-NLS-2$ sb.append("\n\t").append("e = " + e.booleanValue()); //$NON-NLS-1$ //$NON-NLS-2$ sb.append("\n\t").append("a = " + a.booleanValue()); //$NON-NLS-1$ //$NON-NLS-2$ return sb.toString(); } @Override public Crud clone() { return new Crud(c, r, u, d, e, a); } }