Package org.openmeetings.app.data.basic

Source Code of org.openmeetings.app.data.basic.Fieldmanagment

package org.openmeetings.app.data.basic;

import java.util.Date;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Iterator;
import java.util.Map;

import org.slf4j.Logger;
import org.red5.logging.Red5LoggerFactory;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import javax.persistence.NoResultException;
import javax.persistence.Query;
import javax.persistence.EntityManager;
import javax.persistence.EntityTransaction;
import javax.persistence.TypedQuery;

import org.openmeetings.app.data.beans.basic.SearchResult;
import org.openmeetings.app.persistence.beans.lang.FieldLanguage;
import org.openmeetings.app.persistence.beans.lang.Fieldlanguagesvalues;
import org.openmeetings.app.persistence.beans.lang.Fieldvalues;
import org.openmeetings.app.persistence.utils.PersistenceSessionUtil;
import org.openmeetings.app.remote.red5.ScopeApplicationAdapter;

/**
*
* @author sebastianwagner
*
*/
public class Fieldmanagment {

  private static final Logger log = Red5LoggerFactory.getLogger(Fieldmanagment.class, ScopeApplicationAdapter.webAppRootKey);

  private static Fieldmanagment instance = null;

  private Fieldmanagment() {
  }

  public static synchronized Fieldmanagment getInstance() {
    if (instance == null) {
      instance = new Fieldmanagment();
    }
    return instance;
  }
 
  //Reflect the Reverse Order!!
  public Fieldlanguagesvalues getFieldByIdAndLanguageByNavi(Long fieldvalues_id, Long language_id) {
    try {
      if (fieldvalues_id == null) {
        return null;
      }
     
      Object idf = PersistenceSessionUtil.createSession();
      EntityManager session = PersistenceSessionUtil.getSession();
      EntityTransaction tx = session.getTransaction();
      tx.begin();
      Query query = session.createQuery("select f from Fieldlanguagesvalues f WHERE f.language_id = :language_id AND f.fieldvalues_id = :fieldvalues_id");
      query.setParameter("fieldvalues_id", fieldvalues_id);
      query.setParameter("language_id", language_id);
      Fieldlanguagesvalues flv = null;
      try {
        flv = (Fieldlanguagesvalues) query.getSingleResult();
          } catch (NoResultException ex) {
          }
      tx.commit();
      PersistenceSessionUtil.closeSession(idf);
     
      FieldLanguage fieldLanguage = FieldLanguageDaoImpl.getInstance().getFieldLanguageById(language_id);
     
      log.debug("Getting FieldById for Language " + fieldLanguage.getName());
     
      //Check for Right To Left Languages
      if (fieldLanguage.getRtl()) {
       
        log.debug("Language requieres RTL");
       
        Fieldlanguagesvalues remote = flv;
        Fieldlanguagesvalues toAdd = new Fieldlanguagesvalues();
        toAdd.setFieldlanguagesvalues_id(remote.getFieldlanguagesvalues_id());
        toAdd.setFieldvalues_id(remote.getFieldvalues_id());
        toAdd.setLanguage_id(remote.getLanguage_id());

        String[] splitted = remote.getValue().split(" ");
        String reverseOrder = "";
        for (int i=splitted.length-1;i>=0;i--) {
          reverseOrder += splitted[i];
          if (splitted.length != 1) {
            reverseOrder += " ";
          }
        }
        toAdd.setValue(reverseOrder);
       
        return toAdd;
      } else {
        log.debug("Language doesnt requiere RTL");
       
        return flv;
      }
     
    } catch (Exception ex2) {
      log.error("[getFieldByIdAndLanguage]: " , ex2);
    }
    return null;
  }

  public Fieldlanguagesvalues getFieldByIdAndLanguage(Long fieldvalues_id, Long language_id) {
    try {
     
      String hql = "select f from Fieldlanguagesvalues as f " +
              "WHERE f.language_id = :language_id " +
              "AND f.fieldvalues_id = :fieldvalues_id";
     
      Fieldlanguagesvalues flv = null;
     
      Object idf = PersistenceSessionUtil.createSession();
      EntityManager session = PersistenceSessionUtil.getSession();
      EntityTransaction tx = session.getTransaction();
      tx.begin();
     
      Query query = session.createQuery(hql);
     
      query.setParameter("fieldvalues_id", fieldvalues_id);
      query.setParameter("language_id", language_id);
      List<Fieldlanguagesvalues> fList = query.getResultList();
     
      tx.commit();
      PersistenceSessionUtil.closeSession(idf);
     
      if (fList.size() > 0) {
        flv = fList.get(0);
      }
     
      return flv;
    } catch (Exception ex2) {
      log.error("[getFieldByIdAndLanguage]: " , ex2);
    }
    return null;
  }
 
  public Long deleteFieldlanguagesvaluesById(Long fieldlanguagesvalues_id) {
    try {
      Fieldlanguagesvalues flv = this.getFieldlanguagesvaluesById(fieldlanguagesvalues_id);
      if (flv == null) {
        return new Long(-27);
      }
     
      Object idf = PersistenceSessionUtil.createSession();
      EntityManager session = PersistenceSessionUtil.getSession();
      EntityTransaction tx = session.getTransaction();
      tx.begin();
      flv = session.find(Fieldlanguagesvalues.class, fieldlanguagesvalues_id);
      session.remove(flv);
      tx.commit();
      PersistenceSessionUtil.closeSession(idf);
     
      return new Long(-28);
    } catch (Exception ex2) {
      log.error("[getFieldByIdAndLanguage]: " , ex2);
    }
    return new Long(-1);
 

  public List<Fieldlanguagesvalues> getAllFieldsByLanguage(Long language_id) {
    try {
      Object idf = PersistenceSessionUtil.createSession();
      EntityManager session = PersistenceSessionUtil.getSession();
      EntityTransaction tx = session.getTransaction();
      tx.begin();

      Query query = session.createQuery("select f from Fieldlanguagesvalues f WHERE f.language_id = :language_id ");
      query.setParameter("language_id", language_id);
      List<Fieldlanguagesvalues> returnList = query.getResultList();
      tx.commit();
      PersistenceSessionUtil.closeSession(idf);

      return returnList;
    } catch (Exception ex2) {
      log.error("[getConfKey]: " + ex2);
    }
    return null;
  }

  public List<Map> getLabelsByLanguage(Long language_id, int start, int max) {
    try {
      Object idf = PersistenceSessionUtil.createSession();
      EntityManager session = PersistenceSessionUtil.getSession();
      EntityTransaction tx = session.getTransaction();
      tx.begin();
     
      String sql = "select f from Fieldlanguagesvalues as f " +
          "WHERE f.language_id = :language_id " +
          "AND f.fieldvalues_id >= :start AND f.fieldvalues_id <  :max";

      Query query = session.createQuery(sql);
      query.setParameter("language_id", language_id);
      query.setParameter("start", new Long(start));
      query.setParameter("max", new Long(start+max));
     
      List results = query.getResultList();
      tx.commit();
      PersistenceSessionUtil.closeSession(idf);
      List<Map> returnList = new LinkedList<Map>();
      if(results.size()!=0){
        Iterator<Fieldlanguagesvalues> flIterator=results.iterator();
        while(flIterator.hasNext()){
          Fieldlanguagesvalues fl = flIterator.next();
          Map map = new HashMap();
          map.put("id", fl.getFieldvalues_id());
          map.put("value", fl.getValue());
          returnList.add(map);
        }
      }
      FieldLanguage fieldLanguage = FieldLanguageDaoImpl.getInstance().getFieldLanguageById(language_id);
     
      log.debug("Getting Labels for Language " + fieldLanguage.getName());
     
      //Check for Right To Left Languages
      if (fieldLanguage.getRtl()) {
        log.debug("Language requieres RTL!");
       
        List<Map> returnRtlList = new LinkedList<Map>();
        //List<Fieldlanguagesvalues> returnRtlList = new LinkedList<Fieldlanguagesvalues>();
       
        for (Iterator<Map> iter = returnList.iterator();iter.hasNext();) {
          Map remote = iter.next();
         
          Map toAdd = new HashMap();
          toAdd.put("id",remote.get("id"));

          String value = remote.get("value").toString();
         
          String[] splitted = value.split(" ");
          String reverseOrder = "";
          for (int i=splitted.length-1;i>=0;i--) {
            reverseOrder += splitted[i];
            if (splitted.length != 1) {
              reverseOrder += " ";
            }
          }
          toAdd.put("value",value);
         
          returnRtlList.add(toAdd);
        }
       
        return returnRtlList;
      } else {
        log.debug("Language doesnt requiere RTL!");
       
        return returnList;
       
      }
     
     
    } catch (Exception ex2) {
      log.error("[getLabelsByLanguage]: " , ex2);
      ex2.printStackTrace();
    }
    return null;
  }
 
  public List<Fieldlanguagesvalues> getAllFieldsByLanguage(Long language_id, int start, int max) {
    try {
      Object idf = PersistenceSessionUtil.createSession();
      EntityManager session = PersistenceSessionUtil.getSession();
      EntityTransaction tx = session.getTransaction();
      tx.begin();
     
      String sql = "select f from Fieldlanguagesvalues f WHERE f.language_id = :language_id " +
          "AND f.fieldvalues_id >= :start AND f.fieldvalues_id <  :max";
//      log.debug("getAllFieldsByLanguage sql: "+sql);
//      log.debug("getAllFieldsByLanguage language_id: "+language_id);
//      log.debug("getAllFieldsByLanguage start: "+start);
//      log.debug("getAllFieldsByLanguage max: "+max);

      Query query = session.createQuery(sql);
      query.setParameter("language_id", language_id);
      query.setParameter("start", start);
      query.setParameter("max", start+max);
     
      List<Fieldlanguagesvalues> returnList = query.getResultList();
      tx.commit();
      PersistenceSessionUtil.closeSession(idf);
//     
//      for (Iterator<Fieldlanguagesvalues> iter = returnList.iterator();iter.hasNext();){
//        Fieldlanguagesvalues flang = iter.next();
//        log.debug("IDs: "+flang.getFieldlanguagesvalues_id()+" "+flang.getFieldvalues_id());
//       
//      }
     
     
      FieldLanguage fieldLanguage = FieldLanguageDaoImpl.getInstance().getFieldLanguageById(language_id);

      log.debug("GEtting all fields by language : " + fieldLanguage.getName());
     
      //Check for Right To Left Languages
      if (fieldLanguage.getRtl()) {
        log.debug("language : " + fieldLanguage.getName() + " requieres RTL");
       
        List<Fieldlanguagesvalues> returnRtlList = new LinkedList<Fieldlanguagesvalues>();
       
        for (Iterator<Fieldlanguagesvalues> iter = returnList.iterator();iter.hasNext();) {
          Fieldlanguagesvalues remote = iter.next();
          Fieldlanguagesvalues toAdd = new Fieldlanguagesvalues();
          toAdd.setFieldlanguagesvalues_id(remote.getFieldlanguagesvalues_id());
          toAdd.setFieldvalues_id(remote.getFieldvalues_id());
          toAdd.setLanguage_id(remote.getLanguage_id());

          String[] splitted = remote.getValue().split(" ");
          String reverseOrder = "";
          for (int i=splitted.length-1;i>=0;i--) {
            reverseOrder += splitted[i];
            if (splitted.length != 1) {
              reverseOrder += " ";
            }
          }
          toAdd.setValue(reverseOrder);
         
          returnRtlList.add(toAdd);
        }
       
        return returnRtlList;
      } else {
        log.debug("language : " + fieldLanguage.getName() + " requieres NO RTL");
       
        return returnList;
       
      }
     
     
    } catch (Exception ex2) {
      log.error("[getConfKey]: " , ex2);
    }
    return null;
  }
 
  public Long addFieldValueByFieldAndLanguage(Long field_id,
      Long language_id, String fieldvalue) {
    try {
      Object idf = PersistenceSessionUtil.createSession();
      EntityManager session = PersistenceSessionUtil.getSession();
      EntityTransaction tx = session.getTransaction();
      tx.begin();

      Fieldlanguagesvalues flv = new Fieldlanguagesvalues();
      flv.setStarttime(new Date());
      flv.setValue(fieldvalue);
      flv.setLanguage_id(language_id);
      flv.setFieldvalues_id(field_id);
      flv.setDeleted("false");

      flv = session.merge(flv);
      session.flush();
      Long fieldlanguagesvaluesId = flv.getFieldlanguagesvalues_id();
     
      tx.commit();

      PersistenceSessionUtil.closeSession(idf);
     
      return fieldlanguagesvaluesId;
    } catch (Exception ex2) {
      log.error("[getConfKey]: ",ex2);
    }
    return null;
  }
 
  public void updateFieldValueByFieldAndLanguage(Fieldlanguagesvalues flv) {
    try {
      Object idf = PersistenceSessionUtil.createSession();
      EntityManager session = PersistenceSessionUtil.getSession();
      EntityTransaction tx = session.getTransaction();
      tx.begin();

      if (flv.getFieldlanguagesvalues_id() == null) {
        session.persist(flv);
          } else {
            if (!session.contains(flv)) {
              session.merge(flv);
          }
      }

      tx.commit();
      PersistenceSessionUtil.closeSession(idf);

    } catch (Exception ex2) {
      log.error("[updateFieldValueByFieldAndLanguage]: ",ex2);
    }

  } 

  public Long addField(String fieldName) {
    try {
      Object idf = PersistenceSessionUtil.createSession();
      EntityManager session = PersistenceSessionUtil.getSession();
      EntityTransaction tx = session.getTransaction();
      tx.begin();

      Fieldvalues fl = new Fieldvalues();
      fl.setStarttime(new Date());
      fl.setName(fieldName);
      fl.setDeleted("false");

      fl = session.merge(fl);
      Long fieldId = fl.getFieldvalues_id();

      tx.commit();
      PersistenceSessionUtil.closeSession(idf);
     
      return fieldId;
    } catch (Exception ex2) {
      log.error("[getConfKey]: ",ex2);
    }
    return null;
  }
 
  public Long addFieldById(String fieldName, Long fieldvalues_id) {
    try {
      Object idf = PersistenceSessionUtil.createSession();
      EntityManager session = PersistenceSessionUtil.getSession();
      EntityTransaction tx = session.getTransaction();
      tx.begin();

      Fieldvalues fl = new Fieldvalues();
      fl.setFieldvalues_id(fieldvalues_id);
      fl.setStarttime(new Date());
      fl.setName(fieldName);
      fl.setDeleted("false");

      fl = session.merge(fl);
      Long fieldId = fl.getFieldvalues_id();

      tx.commit();
      PersistenceSessionUtil.closeSession(idf);
     
      return fieldId;
    } catch (Exception ex2) {
      log.error("[getConfKey]: ",ex2);
    }
    return null;
 
 
  public List<Fieldvalues> getMixedFieldValuesList(Long language_id) throws Exception {
    List<Fieldvalues> ll = this.getFieldsValues();
    for (Iterator<Fieldvalues> iter = ll.iterator(); iter.hasNext();){
      Fieldvalues fv = iter.next();
      fv.setFieldlanguagesvalue(this.getFieldByIdAndLanguage(fv.getFieldvalues_id(), language_id));
    }
    return ll;
 
 
  public Fieldvalues getFieldvaluesById(Long fieldvalues_id, Long language_id) {
    try {
      //log.error("Long fieldvalues_id, Long language_id "+fieldvalues_id+" || "+language_id);
      Fieldvalues fv = this.getFieldvaluesById(fieldvalues_id);
      fv.setFieldlanguagesvalue(this.getFieldByIdAndLanguage(fieldvalues_id, language_id));
      return fv;
    } catch (Exception e) {
      log.error("[getFieldvaluesById] ",e);
    }
    return null;
  }
 
  /**
   * update given Field and its Label by IDs
   * @param fieldvalues_id
   * @param name
   * @param fieldlanguagesvalues_id
   * @param value
   * @return
   */
  public Long updateLabel(Long fieldvalues_id, String name, Long fieldlanguagesvalues_id, String value) {
    try {
      Fieldvalues fv = this.getFieldvaluesById(fieldvalues_id);
      if (fv==null) {
        return new Long(-24);
      } else {
        fv.setName(name);
        fv.setUpdatetime(new Date());
        this.updateField(fv);
      }
      Fieldlanguagesvalues flv = this.getFieldlanguagesvaluesById(fieldlanguagesvalues_id);
      if (flv==null) {
        return new Long(-25);
      } else {
        flv.setUpdatetime(new Date());
        flv.setValue(value);
        this.updateFieldLanguagesLabel(flv);
      }
      return fieldvalues_id;
    } catch (Exception ex2) {
      log.error("[updateFieldLanguagesLabel]: ",ex2);
    }
    return new Long(-1);
  }
 
  public Long addAndUpdateLabel(Long fieldvalues_id, String name, String value, Long language_id) {
    try {
      Fieldvalues fv = this.getFieldvaluesById(fieldvalues_id);
      if (fv==null) {
        return new Long(-24);
      } else {
        fv.setName(name);
        fv.setUpdatetime(new Date());
        this.updateField(fv);
      }
      this.addFieldValueByFieldAndLanguage(fieldvalues_id, language_id, value);
      return fieldvalues_id;
    } catch (Exception ex2) {
      log.error("[updateFieldLanguagesLabel]: ",ex2);
    }
    return new Long(-1);
 
 
  public Long addFieldAndLabel(String name, String value, Long language_id) {
    try {
      Long fieldvalues_id = this.addField(name);
      if (fieldvalues_id>0) {
        this.addFieldValueByFieldAndLanguage(fieldvalues_id, language_id, value);
        return fieldvalues_id;
      } else {
        return new Long(-1);
      }
    } catch (Exception ex2) {
      log.error("[updateFieldLanguagesLabel]: ",ex2);
    }
    return new Long(-1);
 
 
  public SearchResult getFieldsByLanguage(int start ,int max, String orderby, boolean asc, Long language_id){
    try {
      SearchResult sresult = new SearchResult();
      sresult.setObjectName(Fieldlanguagesvalues.class.getName());
      sresult.setRecords(this.selectMaxFromFieldsValues());
      sresult.setResult(this.getMixedFieldValuesList(start, max, orderby, asc, language_id));
      return sresult;
    } catch (Exception ex2) {
      log.error("[getFieldsByLanguage]: ",ex2);
    }
    return null;
  }

  private Long selectMaxFromFieldsValues() throws Exception{
    Object idf = PersistenceSessionUtil.createSession();
    EntityManager session = PersistenceSessionUtil.getSession();
    EntityTransaction tx = session.getTransaction();
    tx.begin();
    Query query = session.createQuery("select max(c.fieldvalues_id) from Fieldvalues c where c.deleted = 'false'");
    List ll = query.getResultList();
    tx.commit();
    PersistenceSessionUtil.closeSession(idf);
    //log.error((Long)ll.get(0));
    return (Long)ll.get(0);       
 
 
  private List<Fieldvalues> getMixedFieldValuesList(int start ,int max, String orderby, boolean asc, Long language_id) throws Exception {
    List<Fieldvalues> ll = this.getFieldsValues(start, max, orderby, asc);
    for (Iterator<Fieldvalues> iter = ll.iterator(); iter.hasNext();){
      Fieldvalues fv = iter.next();
      fv.setFieldlanguagesvalue(this.getFieldByIdAndLanguage(fv.getFieldvalues_id(), language_id));
    }
    return ll;
  }
 
  private List<Fieldvalues> getFieldsValues() throws Exception {
    Object idf = PersistenceSessionUtil.createSession();
    EntityManager session = PersistenceSessionUtil.getSession();
    EntityTransaction tx = session.getTransaction();
    tx.begin();
    CriteriaBuilder cb = session.getCriteriaBuilder();
    CriteriaQuery<Fieldvalues> cq = cb.createQuery(Fieldvalues.class);
    Root<Fieldvalues> c = cq.from(Fieldvalues.class);
    Predicate condition = cb.equal(c.get("deleted"), "false");
    cq.where(condition);
    TypedQuery<Fieldvalues> q = session.createQuery(cq);
    List<Fieldvalues> ll = q.getResultList();
    tx.commit();
    PersistenceSessionUtil.closeSession(idf);
    return ll;
  }
 
  private List<Fieldvalues> getFieldsValues(int start ,int max, String orderby, boolean asc) throws Exception {
    Object idf = PersistenceSessionUtil.createSession();
    EntityManager session = PersistenceSessionUtil.getSession();
    EntityTransaction tx = session.getTransaction();
    tx.begin();
    CriteriaBuilder cb = session.getCriteriaBuilder();
    CriteriaQuery<Fieldvalues> cq = cb.createQuery(Fieldvalues.class);
    Root<Fieldvalues> c = cq.from(Fieldvalues.class);
    Predicate condition = cb.equal(c.get("deleted"), "false");
    cq.where(condition);
    cq.distinct(asc);
    if (asc){
      cq.orderBy(cb.asc(c.get(orderby)));
    } else {
      cq.orderBy(cb.desc(c.get(orderby)));
    }
    TypedQuery<Fieldvalues> q = session.createQuery(cq);
    q.setFirstResult(start);
    q.setMaxResults(max);
    List<Fieldvalues> ll = q.getResultList();
    tx.commit();
    PersistenceSessionUtil.closeSession(idf);
    return ll;
  }   
 
  public Fieldvalues getFieldvaluesById(Long fieldvalues_id) throws Exception {
    String hql = "select f from Fieldvalues f WHERE f.fieldvalues_id = :fieldvalues_id ";
    Object idf = PersistenceSessionUtil.createSession();
    EntityManager session = PersistenceSessionUtil.getSession();
    EntityTransaction tx = session.getTransaction();
    tx.begin();
    Query query = session.createQuery(hql);
    query.setParameter("fieldvalues_id", fieldvalues_id);
    Fieldvalues fv = null;
    try {
      fv = (Fieldvalues) query.getSingleResult();
      } catch (NoResultException ex) {
      }
    tx.commit();
    PersistenceSessionUtil.closeSession(idf);
    return fv;
  }
 
  private Fieldlanguagesvalues getFieldlanguagesvaluesById(Long fieldlanguagesvalues_id) throws Exception {
    String hql = "select f from Fieldlanguagesvalues f WHERE f.fieldlanguagesvalues_id = :fieldlanguagesvalues_id ";
    Object idf = PersistenceSessionUtil.createSession();
    EntityManager session = PersistenceSessionUtil.getSession();
    EntityTransaction tx = session.getTransaction();
    tx.begin();
    Query query = session.createQuery(hql);
    query.setParameter("fieldlanguagesvalues_id", fieldlanguagesvalues_id);
    Fieldlanguagesvalues flv = null;
    try {
      flv = (Fieldlanguagesvalues) query.getSingleResult();
      } catch (NoResultException ex) {
      }
    tx.commit();
    PersistenceSessionUtil.closeSession(idf);
    return flv;
  }
 
  private void updateField(Fieldvalues fv) throws Exception {
      Object idf = PersistenceSessionUtil.createSession();
      EntityManager session = PersistenceSessionUtil.getSession();
      EntityTransaction tx = session.getTransaction();
      tx.begin();
      if (fv.getFieldvalues_id() == null) {
        session.persist(fv);
          } else {
            if (!session.contains(fv)) {
              session.merge(fv);
          }
      }
      tx.commit();
      PersistenceSessionUtil.closeSession(idf);
  }
 
  private void updateFieldLanguagesLabel(Fieldlanguagesvalues flv) throws Exception {
      Object idf = PersistenceSessionUtil.createSession();
      EntityManager session = PersistenceSessionUtil.getSession();
      EntityTransaction tx = session.getTransaction();
      tx.begin();
      if (flv.getFieldlanguagesvalues_id() == null) {
        session.persist(flv);
          } else {
            if (!session.contains(flv)) {
              session.merge(flv);
          }
      }
      tx.commit();
      PersistenceSessionUtil.closeSession(idf);
 

}
TOP

Related Classes of org.openmeetings.app.data.basic.Fieldmanagment

TOP
Copyright © 2018 www.massapi.com. 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.