Package play.data.binding

Examples of play.data.binding.BeanWrapper$Property


  }
   
    public static <T extends SienaSupport> T deleteListElement(Object o, String fieldName, int idx) {
      try {
        Class clazz = o.getClass();
      BeanWrapper bw = new BeanWrapper(o.getClass());
      Field field = clazz.getField(fieldName);
     
      if(List.class.isAssignableFrom(field.getType())){
        List l = (List)field.get(o);
        if(l == null)
View Full Code Here


    public static <T extends SienaSupport> T addMapElement(
        Object o, String fieldName, String key)
    {
      try {
        Class clazz = o.getClass();
      BeanWrapper bw = new BeanWrapper(o.getClass());
      Field field = clazz.getField(fieldName);
     
      if(Map.class.isAssignableFrom(field.getType())){
        Map l = (Map)field.get(o);
               
        Class embedKeyClass =
          (Class) ((ParameterizedType)
              field.getGenericType()).getActualTypeArguments()[0];
       
        Class embedClass =
          (Class) ((ParameterizedType)
            field.getGenericType()).getActualTypeArguments()[1];
         
        if(l == null){
          l = new HashMap();
        }

        Object embedObj = embedClass.newInstance();
        Object embedKey = Binder.directBind(key, embedKeyClass);
       
        if(l.get(embedKey) != null){
          Logger.debug("element with key %s already existing", embedKey);
          Validation.addError(
              fieldName,
              "validation.fieldMap.alreadyExists", embedKey.toString())
        }
        else {
          l.put(embedKey, embedObj);
          Logger.debug("map added {%s:%s}", embedKey, embedObj);
        }   
       
        bw.set(field.getName(), o, l);     
      }
      else Validation.addError(
          clazz.getName() + "."+field.getName(),
          "validation.fieldMap.badType", fieldName);     
     
View Full Code Here

    public static <T extends SienaSupport> T deleteMapElement(
        Object o, String fieldName, String key)
    {
      try {
        Class clazz = o.getClass();
      BeanWrapper bw = new BeanWrapper(o.getClass());
      Field field = clazz.getField(fieldName);
     
      if(Map.class.isAssignableFrom(field.getType())){
        Map l = (Map)field.get(o);
        if(l == null)
          Validation.addError(
              clazz.getName() + "."+field.getName(),
              "validation.fieldMap.empty", fieldName);
        else {
          Class embedKeyClass =
            (Class) ((ParameterizedType)
                field.getGenericType()).getActualTypeArguments()[0];
          BeanWrapper keybw = new BeanWrapper(embedKeyClass);
          try {
            Object embedKey = Binder.directBind(key, embedKeyClass);
            l.remove(embedKey);
          }catch(Exception ex){
            Validation.addError(
View Full Code Here

        ParamNode paramNode = rootParamNode.getChild(name, true);
        // #1195 - Needs to keep track of whick keys we remove so that we can restore it before
        // returning from this method.
        List<ParamNode.RemovedNode> removedNodesList = new ArrayList<ParamNode.RemovedNode>();
        try {
            BeanWrapper bw = new BeanWrapper(o.getClass());
            // Start with relations
            Set<Field> fields = new HashSet<Field>();
            Class clazz = o.getClass();
            while (!clazz.equals(Object.class)) {
                Collections.addAll(fields, clazz.getDeclaredFields());
                clazz = clazz.getSuperclass();
            }
            for (Field field : fields) {
                boolean isEntity = false;
                String relation = null;
                boolean multiple = false;
                //
                if (field.isAnnotationPresent(OneToOne.class) || field.isAnnotationPresent(ManyToOne.class)) {
                    isEntity = true;
                    relation = field.getType().getName();
                }
                if (field.isAnnotationPresent(OneToMany.class) || field.isAnnotationPresent(ManyToMany.class)) {
                    Class fieldType = (Class) ((ParameterizedType) field.getGenericType()).getActualTypeArguments()[0];
                    isEntity = true;
                    relation = fieldType.getName();
                    multiple = true;
                }

                if (isEntity) {

                    ParamNode fieldParamNode = paramNode.getChild(field.getName(), true);

                    Class<Model> c = (Class<Model>) Play.classloader.loadClass(relation);
                    if (JPABase.class.isAssignableFrom(c)) {
                        String keyName = Model.Manager.factoryFor(c).keyName();
                        if (multiple && Collection.class.isAssignableFrom(field.getType())) {
                            Collection l = new ArrayList();
                            if (SortedSet.class.isAssignableFrom(field.getType())) {
                                l = new TreeSet();
                            } else if (Set.class.isAssignableFrom(field.getType())) {
                                l = new HashSet();
                            }
                            String[] ids = fieldParamNode.getChild(keyName, true).getValues();
                            if (ids != null) {
                                // Remove it to prevent us from finding it again later
                                fieldParamNode.removeChild(keyName, removedNodesList);
                                for (String _id : ids) {
                                    if (_id.equals("")) {
                                        continue;
                                    }
                                    Query q = JPA.em().createQuery("from " + relation + " where " + keyName + " = ?");
                                    q.setParameter(1, Binder.directBind(rootParamNode.getOriginalKey(), annotations, _id, Model.Manager.factoryFor((Class<Model>) Play.classloader.loadClass(relation)).keyType(), null));
                                    try {
                                        l.add(q.getSingleResult());

                                    } catch (NoResultException e) {
                                        Validation.addError(name + "." + field.getName(), "validation.notFound", _id);
                                    }
                                }
                                bw.set(field.getName(), o, l);
                            }
                        } else {
                            String[] ids = fieldParamNode.getChild(keyName, true).getValues();
                            if (ids != null && ids.length > 0 && !ids[0].equals("")) {

                                Query q = JPA.em().createQuery("from " + relation + " where " + keyName + " = ?");
                                q.setParameter(1, Binder.directBind(rootParamNode.getOriginalKey(), annotations, ids[0], Model.Manager.factoryFor((Class<Model>) Play.classloader.loadClass(relation)).keyType(), null));
                                try {
                                    Object to = q.getSingleResult();
                                    edit(paramNode, field.getName(), to, field.getAnnotations());
                                    // Remove it to prevent us from finding it again later
                                    paramNode.removeChild( field.getName(), removedNodesList);
                                    bw.set(field.getName(), o, to);
                                } catch (NoResultException e) {
                                    Validation.addError(fieldParamNode.getOriginalKey(), "validation.notFound", ids[0]);
                                    // Remove only the key to prevent us from finding it again later
                                    // This how the old impl does it..
                                    fieldParamNode.removeChild(keyName, removedNodesList);
                                    if (fieldParamNode.getAllChildren().size()==0) {
                                        // remove the whole node..
                                        paramNode.removeChild( field.getName(), removedNodesList);
                                    }

                                }

                            } else if (ids != null && ids.length > 0 && ids[0].equals("")) {
                                bw.set(field.getName(), o, null);
                                // Remove the key to prevent us from finding it again later
                                fieldParamNode.removeChild(keyName, removedNodesList);
                            }
                        }
                    }
View Full Code Here

    }

    @SuppressWarnings("deprecation")
    public static <T extends JPABase> T edit(Object o, String name, Map<String, String[]> params, Annotation[] annotations) {
        try {
            BeanWrapper bw = new BeanWrapper(o.getClass());
            // Start with relations
            Set<Field> fields = new HashSet<Field>();
            Class clazz = o.getClass();
            while (!clazz.equals(Object.class)) {
                Collections.addAll(fields, clazz.getDeclaredFields());
                clazz = clazz.getSuperclass();
            }
            for (Field field : fields) {
                boolean isEntity = false;
                String relation = null;
                boolean multiple = false;
                //
                if (field.isAnnotationPresent(OneToOne.class) || field.isAnnotationPresent(ManyToOne.class)) {
                    isEntity = true;
                    relation = field.getType().getName();
                }
                if (field.isAnnotationPresent(OneToMany.class) || field.isAnnotationPresent(ManyToMany.class)) {
                    Class fieldType = (Class) ((ParameterizedType) field.getGenericType()).getActualTypeArguments()[0];
                    isEntity = true;
                    relation = fieldType.getName();
                    multiple = true;
                }

                if (isEntity) {
                    Class<Model> c = (Class<Model>) Play.classloader.loadClass(relation);
                    if (JPABase.class.isAssignableFrom(c)) {
                        String keyName = Model.Manager.factoryFor(c).keyName();
                        if (multiple && Collection.class.isAssignableFrom(field.getType())) {
                            Collection l = new ArrayList();
                            if (SortedSet.class.isAssignableFrom(field.getType())) {
                                l = new TreeSet();
                            } else if (Set.class.isAssignableFrom(field.getType())) {
                                l = new HashSet();
                            }
                            String[] ids = params.get(name + "." + field.getName() + "." + keyName);
                            if (ids != null) {
                                params.remove(name + "." + field.getName() + "." + keyName);
                                for (String _id : ids) {
                                    if (_id.equals("")) {
                                        continue;
                                    }
                                    Query q = JPA.em().createQuery("from " + relation + " where " + keyName + " = ?");
                                    q.setParameter(1, Binder.directBind(_id, Model.Manager.factoryFor((Class<Model>) Play.classloader.loadClass(relation)).keyType()));
                                    try {
                                        l.add(q.getSingleResult());
                                    } catch (NoResultException e) {
                                        Validation.addError(name + "." + field.getName(), "validation.notFound", _id);
                                    }
                                }
                                bw.set(field.getName(), o, l);
                            }
                        } else {
                            String[] ids = params.get(name + "." + field.getName() + "." + keyName);
                            if (ids != null && ids.length > 0 && !ids[0].equals("")) {
                                params.remove(name + "." + field.getName() + "." + keyName);
                                Query q = JPA.em().createQuery("from " + relation + " where " + keyName + " = ?");
                                q.setParameter(1, Binder.directBind(ids[0], Model.Manager.factoryFor((Class<Model>) Play.classloader.loadClass(relation)).keyType()));
                                try {
                                    String localName = name + "." + field.getName();
                                    Object to = q.getSingleResult();
                                    edit(to, localName, params, field.getAnnotations());
                                    params = Utils.filterMap(params, localName);
                                    bw.set(field.getName(), o, to);
                                } catch (NoResultException e) {
                                    Validation.addError(name + "." + field.getName(), "validation.notFound", ids[0]);
                                }
                            } else if (ids != null && ids.length > 0 && ids[0].equals("")) {
                                bw.set(field.getName(), o, null);
                                params.remove(name + "." + field.getName() + "." + keyName);
                            }
                        }
                    }
                }
                // ----- THIS CODE IS DEPRECATED AND WILL BE REMOVED IN NEXT VERSION -----
                if (field.getType().equals(FileAttachment.class) && Params.current() != null) {
                    FileAttachment fileAttachment = ((FileAttachment) field.get(o));
                    if (fileAttachment == null) {
                        fileAttachment = new FileAttachment(o, field.getName());
                        bw.set(field.getName(), o, fileAttachment);
                    }
                    File file = Params.current().get(name + "." + field.getName(), File.class);
                    if (file != null && file.exists() && file.length() > 0) {
                        fileAttachment.set(Params.current().get(name + "." + field.getName(), File.class));
                        fileAttachment.filename = file.getName();
                    } else {
                        String df = Params.current().get(name + "." + field.getName() + "_delete_", String.class);
                        if (df != null && df.equals("true")) {
                            fileAttachment.delete();
                            bw.set(field.getName(), o, null);
                        }
                    }
                    params.remove(name + "." + field.getName());
                }
                // -----
            }
            bw.bind(name, o.getClass(), params, "", o, annotations);
            return (T) o;
        } catch (Exception e) {
            throw new UnexpectedException(e);
        }
    }
View Full Code Here

    @SuppressWarnings("unchecked")
    public static <T extends Model> T edit(ParamNode rootParamNode, String name, Object o, Annotation[] annotations) {
        ParamNode paramNode = rootParamNode.getChild(name, true);
        List<ParamNode.RemovedNode> removedNodesList = new ArrayList<ParamNode.RemovedNode>();
        try {
            BeanWrapper bw = new BeanWrapper(o.getClass());
            // Start with relations
            Set<Field> fields = new HashSet<Field>();
            Class clazz = o.getClass();
            while (!clazz.equals(Object.class)) {
                Collections.addAll(fields, clazz.getDeclaredFields());
                clazz = clazz.getSuperclass();
            }
            for (Field field : fields) {
                boolean isEntity = false;
                String relation = null;
                boolean multiple = false;
                //
                if (Model.class.isAssignableFrom(field.getType())) {
                    isEntity = true;
                    relation = field.getType().getName();
                }
                if (Collection.class.isAssignableFrom(field.getType())) {
                    Class fieldType = (Class) ((ParameterizedType) field.getGenericType()).getActualTypeArguments()[0];
                    if (Model.class.isAssignableFrom(fieldType)) {
                        isEntity = true;
                        relation = fieldType.getName();
                        multiple = true;
                    }
                }

                if (isEntity) {
                    ParamNode fieldParamNode = paramNode.getChild(field.getName(), true);
                    Class<Model> c = (Class<Model>) Play.classloader.loadClass(relation);
                    if (Model.class.isAssignableFrom(c)) {
                        String keyName = Model.Manager.factoryFor(c).keyName();
                        if (multiple && Collection.class.isAssignableFrom(field.getType())) {
                            Collection l = new ArrayList();
                            if (SortedSet.class.isAssignableFrom(field.getType())) {
                                l = new TreeSet();
                            } else if (Set.class.isAssignableFrom(field.getType())) {
                                l = new HashSet();
                            }
                            String[] ids = fieldParamNode.getChild(keyName, true).getValues();
                            if (ids != null) {
                                fieldParamNode.removeChild(keyName, removedNodesList);
                                for (String _id : ids) {
                                    if (_id.equals("")) {
                                        continue;
                                    }
                                    Object param = _id;
                                    try {
                                        if (param instanceof String) {
                                            param = new ORecordId((String) param);
                                        }
                                        Object res = ODB.openObjectDB().load((ORID) param);
                                        l.add(res);
                                    } catch (ORecordNotFoundException e) {
                                        Validation.addError(name + "." + field.getName(), "validation.notFound", _id);
                                    }
                                }
                                bw.set(field.getName(), o, l);
                            }
                        } else {
                            String[] ids = fieldParamNode.getChild(keyName, true).getValues();
                            if (ids != null && ids.length > 0 && !ids[0].equals("")) {
                                Object param = ids[0];
                                try {
                                    if (param instanceof String) {
                                        param = new ORecordId((String) param);
                                    }
                                    Object to = ODB.openObjectDB().load((ORID) param);
                                    edit(paramNode, field.getName(), to, field.getAnnotations());
                                    paramNode.removeChild( field.getName(), removedNodesList);
                                    bw.set(field.getName(), o, to);
                                } catch (ORecordNotFoundException e) {
                                    Validation.addError(name + "." + field.getName(), "validation.notFound", ids[0]);
                                    fieldParamNode.removeChild(keyName, removedNodesList);
                                    if (fieldParamNode.getAllChildren().size()==0) {
                                    // remove the whole node..
                                    paramNode.removeChild( field.getName(), removedNodesList);
                                  }
                                }
                            } else if (ids != null && ids.length > 0 && ids[0].equals("")) {
                                bw.set(field.getName(), o, null);
                                fieldParamNode.removeChild(keyName, removedNodesList);
                            }
                        }
                    }
                }
View Full Code Here

public class CrudSienaUtils {
  public static <T> T addListElement(T o, String fieldName) {
      try {
        Class<?> clazz = o.getClass();
      BeanWrapper bw = new BeanWrapper(o.getClass());
      Field field = clazz.getField(fieldName);
     
      if(List.class.isAssignableFrom(field.getType())){
        List l = (List)field.get(o);
        if(l == null)
          l = new ArrayList();
       
        Class<?> embedClass =
          (Class<?>) ((ParameterizedType)
              field.getGenericType()).getActualTypeArguments()[0];
        BeanWrapper embedbw = new BeanWrapper(embedClass);
        Object embedObj = siena.Util.createObjectInstance(embedClass);
       
        l.add(embedObj);
       
        Logger.debug(embedObj.toString());
View Full Code Here

  }
 
  public static <T> T deleteListElement(T o, String fieldName, int idx) {
      try {
        Class<?> clazz = o.getClass();
      BeanWrapper bw = new BeanWrapper(o.getClass());
      Field field = clazz.getField(fieldName);
     
      if(List.class.isAssignableFrom(field.getType())){
        List l = (List)field.get(o);
        if(l == null)
View Full Code Here

 
  public static <T> T addMapElement(T o, String fieldName, String key)
    {
      try {
        Class<?> clazz = o.getClass();
      BeanWrapper bw = new BeanWrapper(o.getClass());
      Field field = clazz.getField(fieldName);
     
      if(Map.class.isAssignableFrom(field.getType())){
        Map l = (Map)field.get(o);
               
        Class<?> embedKeyClass =
          (Class<?>) ((ParameterizedType)
              field.getGenericType()).getActualTypeArguments()[0];
       
        Class<?> embedClass =
          (Class<?>) ((ParameterizedType)
            field.getGenericType()).getActualTypeArguments()[1];
         
        if(l == null){
          l = new HashMap();
        }

        Object embedObj = embedClass.newInstance();
        Object embedKey = Binder.directBind(key, embedKeyClass);
       
        if(l.get(embedKey) != null){
          Logger.debug("element with key %s already existing", embedKey);
          Validation.addError(
              fieldName,
              "validation.fieldMap.alreadyExists", embedKey.toString())
        }
        else {
          l.put(embedKey, embedObj);
          Logger.debug("map added {%s:%s}", embedKey, embedObj);
        }   
       
        bw.set(field.getName(), o, l);     
      }
      else Validation.addError(
          clazz.getName() + "."+field.getName(),
          "validation.fieldMap.badType", fieldName);     
     
View Full Code Here

 
  public static <T> T deleteMapElement(T o, String fieldName, String key)
    {
      try {
        Class<?> clazz = o.getClass();
      BeanWrapper bw = new BeanWrapper(o.getClass());
      Field field = clazz.getField(fieldName);
     
      if(Map.class.isAssignableFrom(field.getType())){
        Map l = (Map)field.get(o);
        if(l == null)
          Validation.addError(
              clazz.getName() + "."+field.getName(),
              "validation.fieldMap.empty", fieldName);
        else {
          Class<?> embedKeyClass =
            (Class<?>) ((ParameterizedType)
                field.getGenericType()).getActualTypeArguments()[0];
          BeanWrapper keybw = new BeanWrapper(embedKeyClass);
          try {
            Object embedKey = Binder.directBind(key, embedKeyClass);
            l.remove(embedKey);
          }catch(Exception ex){
            Validation.addError(
View Full Code Here

TOP

Related Classes of play.data.binding.BeanWrapper$Property

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.