Search in sources :

Example 31 with SQLQuery

use of org.hibernate.SQLQuery in project java-design-patterns by iluwatar.

the class QueryServiceImpl method getAuthorsCount.

@Override
public BigInteger getAuthorsCount() {
    BigInteger authorcount = null;
    try (Session session = sessionFactory.openSession()) {
        SQLQuery sqlQuery = session.createSQLQuery("SELECT count(id) from Author");
        authorcount = (BigInteger) sqlQuery.uniqueResult();
    }
    return authorcount;
}
Also used : BigInteger(java.math.BigInteger) SQLQuery(org.hibernate.SQLQuery) Session(org.hibernate.Session)

Example 32 with SQLQuery

use of org.hibernate.SQLQuery in project gocd by gocd.

the class PipelineRepository method updatePipelineTimeline.

@SuppressWarnings({ "unchecked" })
public void updatePipelineTimeline(final PipelineTimeline pipelineTimeline, final List<PipelineTimelineEntry> tempEntriesForRollback) {
    getHibernateTemplate().execute(new HibernateCallback() {

        private static final int PIPELINE_NAME = 0;

        private static final int ID = 1;

        private static final int COUNTER = 2;

        private static final int MODIFIED_TIME = 3;

        private static final int FINGERPRINT = 4;

        private static final int NATURAL_ORDER = 5;

        private static final int REVISION = 6;

        private static final int FOLDER = 7;

        private static final int MOD_ID = 8;

        private static final int PMR_ID = 9;

        public Object doInHibernate(Session session) throws HibernateException, SQLException {
            LOGGER.info("Start updating pipeline timeline");
            List<Object[]> matches = retrieveTimeline(session, pipelineTimeline);
            List<PipelineTimelineEntry> newPipelines = populateFrom(matches);
            addEntriesToPipelineTimeline(newPipelines, pipelineTimeline, tempEntriesForRollback);
            updateNaturalOrdering(session, newPipelines);
            LOGGER.info("Pipeline timeline updated");
            return null;
        }

        private void updateNaturalOrdering(Session session, List<PipelineTimelineEntry> pipelines) {
            for (PipelineTimelineEntry pipeline : pipelines) {
                if (pipeline.hasBeenUpdated()) {
                    updateNaturalOrderForPipeline(session, pipeline.getId(), pipeline.naturalOrder());
                }
            }
        }

        private List<Object[]> loadTimeline(SQLQuery query) {
            long startedAt = System.currentTimeMillis();
            List<Object[]> matches = (List<Object[]>) query.list();
            long duration = System.currentTimeMillis() - startedAt;
            if (duration > 1000) {
                LOGGER.warn("updating in memory pipeline-timeline took: {} ms", duration);
            }
            return matches;
        }

        private List<Object[]> retrieveTimeline(Session session, PipelineTimeline pipelineTimeline) {
            SQLQuery query = session.createSQLQuery(queryExtensions.retrievePipelineTimeline());
            query.setLong(0, pipelineTimeline.maximumId());
            List<Object[]> matches = loadTimeline(query);
            sortTimeLineByPidAndPmrId(matches);
            return matches;
        }

        private void sortTimeLineByPidAndPmrId(List<Object[]> matches) {
            Collections.sort(matches, new Comparator<Object[]>() {

                @Override
                public int compare(Object[] m1, Object[] m2) {
                    long id1 = id(m1);
                    long id2 = id(m2);
                    if (id1 == id2) {
                        return (int) (pmrId(m1) - pmrId(m2));
                    }
                    return (int) (id1 - id2);
                }
            });
        }

        private List<PipelineTimelineEntry> populateFrom(List<Object[]> matches) {
            ArrayList<PipelineTimelineEntry> newPipelines = new ArrayList<>();
            if (matches.isEmpty()) {
                return newPipelines;
            }
            Map<String, List<PipelineTimelineEntry.Revision>> revisions = new HashMap<>();
            String name = null;
            long curId = -1;
            Integer counter = null;
            double naturalOrder = 0.0;
            PipelineTimelineEntry entry = null;
            for (int i = 0; i < matches.size(); i++) {
                Object[] row = matches.get(i);
                long id = id(row);
                if (curId != id) {
                    name = pipelineName(row);
                    curId = id;
                    counter = counter(row);
                    revisions = new HashMap<>();
                    naturalOrder = naturalOrder(row);
                }
                String fingerprint = fingerprint(row);
                if (!revisions.containsKey(fingerprint)) {
                    revisions.put(fingerprint, new ArrayList<>());
                }
                revisions.get(fingerprint).add(rev(row));
                int nextI = i + 1;
                if ((// new pipeline instance starts in next record, so capture this one
                (nextI < matches.size() && id(matches.get(nextI)) != curId) || nextI == matches.size())) {
                    // this is the last record, so capture it
                    entry = new PipelineTimelineEntry(name, curId, counter, revisions, naturalOrder);
                    newPipelines.add(entry);
                }
            }
            return newPipelines;
        }

        private String folder(Object[] row) {
            return (String) row[FOLDER];
        }

        private PipelineTimelineEntry.Revision rev(Object[] row) {
            return new PipelineTimelineEntry.Revision(modifiedTime(row), stringRevision(row), folder(row), modId(row));
        }

        private long pmrId(Object[] row) {
            return ((BigInteger) row[PMR_ID]).longValue();
        }

        private long modId(Object[] row) {
            return ((BigInteger) row[MOD_ID]).longValue();
        }

        private double naturalOrder(Object[] row) {
            return (Double) row[NATURAL_ORDER];
        }

        private Date modifiedTime(Object[] row) {
            return (Date) row[MODIFIED_TIME];
        }

        private String stringRevision(Object[] row) {
            return (String) row[REVISION];
        }

        private String fingerprint(Object[] row) {
            return String.valueOf(row[FINGERPRINT]);
        }

        private String pipelineName(Object[] row) {
            return (String) row[PIPELINE_NAME];
        }

        private int counter(Object[] row) {
            return row[COUNTER] == null ? -1 : ((BigInteger) row[COUNTER]).intValue();
        }

        private long id(Object[] first) {
            return ((BigInteger) first[ID]).longValue();
        }
    });
}
Also used : SQLException(java.sql.SQLException) HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) SQLQuery(org.hibernate.SQLQuery) PipelineTimelineEntry(com.thoughtworks.go.domain.PipelineTimelineEntry) PipelineTimeline(com.thoughtworks.go.server.domain.PipelineTimeline) Comparator(java.util.Comparator) ArrayList(java.util.ArrayList) List(java.util.List) HibernateCallback(org.springframework.orm.hibernate3.HibernateCallback) HibernateException(org.hibernate.HibernateException) Date(java.util.Date) BigInteger(java.math.BigInteger) BigInteger(java.math.BigInteger) HashMap(java.util.HashMap) Map(java.util.Map) Session(org.hibernate.Session)

Example 33 with SQLQuery

use of org.hibernate.SQLQuery in project gocd by gocd.

the class PipelineRepository method updateNaturalOrderForPipeline.

public static int updateNaturalOrderForPipeline(Session session, Long pipelineId, double naturalOrder) {
    String sql = "UPDATE pipelines SET naturalOrder = :naturalOrder WHERE id = :pipelineId";
    SQLQuery query = session.createSQLQuery(sql);
    query.setLong("pipelineId", pipelineId);
    query.setDouble("naturalOrder", naturalOrder);
    return query.executeUpdate();
}
Also used : SQLQuery(org.hibernate.SQLQuery)

Example 34 with SQLQuery

use of org.hibernate.SQLQuery in project dhis2-core by dhis2.

the class HibernateGenericStore method getSqlQuery.

/**
     * Creates a SqlQuery.
     *
     * @param sql the sql query.
     * @return a SqlQuery instance.
     */
protected final SQLQuery getSqlQuery(String sql) {
    SQLQuery query = getSession().createSQLQuery(sql);
    query.setCacheable(cacheable);
    return query;
}
Also used : SQLQuery(org.hibernate.SQLQuery)

Example 35 with SQLQuery

use of org.hibernate.SQLQuery in project arquivoProject by fader-azevedo.

the class DBConnector method tooltipEstante.

public Tooltip tooltipEstante(String codigo) {
    Estante est = (Estante) getEstOrPratOrPastByCodigo(codigo, Estante.class);
    String datac = new SimpleDateFormat("dd/MM/yyyy HH:mm").format(est.getDataCriacao());
    Usuario user = (Usuario) buscarPorId(Usuario.class, est.getUsuario());
    int numDePastas = 0;
    int numDeDocs = 0;
    List<Pratileira> dataPraliteira = null;
    List<Pasta> dataPasta = null;
    List<Pauta> dataPauta = null;
    try {
        sessao = HibernateUtil.getSessionFactory().openSession();
        sessao.beginTransaction();
        SQLQuery query = sessao.createSQLQuery("SELECT * FROM  Pratileira WHERE  idestante =?").addEntity(Pratileira.class);
        dataPraliteira = query.setString(0, est.getIdestante() + "%").list();
        for (Pratileira pra : dataPraliteira) {
            SQLQuery query1 = sessao.createSQLQuery("SELECT * FROM  Pasta WHERE  idpratileira =?").addEntity(Pasta.class);
            dataPasta = query1.setString(0, pra.getIdpratileira() + "%").list();
            for (Pasta pasta : dataPasta) {
                numDePastas += 1;
                SQLQuery query2 = sessao.createSQLQuery("SELECT * FROM  Pauta WHERE  idpasta =?").addEntity(Pauta.class);
                dataPauta = query2.setString(0, pasta.getIdpasta() + "%").list();
                for (Pauta pauta : dataPauta) {
                    numDeDocs += 1;
                }
            }
        }
        sessao.getTransaction().commit();
        sessao.close();
    } catch (HibernateException e) {
        alertErro("Erro ao buscar dados " + e);
    }
    Tooltip tooltip = new Tooltip();
    tooltip.setText("Pratileiras       : " + dataPraliteira.size() + "\n" + "Pastas             : " + numDePastas + "\n" + "Documentos   : " + numDeDocs + "\n" + "Data Criada    : " + datac + "\n" + "Criada Por      : " + user.getNome() + " " + user.getApelido());
    MaterialIconView icon = new MaterialIconView(MaterialIcon.INFO, "50");
    icon.setFill(Paint.valueOf("#75B4C9"));
    tooltip.setGraphic(icon);
    return tooltip;
}
Also used : HibernateException(org.hibernate.HibernateException) Tooltip(javafx.scene.control.Tooltip) MaterialIconView(de.jensd.fx.glyphs.materialicons.MaterialIconView) SQLQuery(org.hibernate.SQLQuery) Paint(javafx.scene.paint.Paint) SimpleDateFormat(java.text.SimpleDateFormat)

Aggregations

SQLQuery (org.hibernate.SQLQuery)35 Session (org.hibernate.Session)22 Test (org.junit.Test)13 List (java.util.List)6 Paint (javafx.scene.paint.Paint)5 HibernateException (org.hibernate.HibernateException)4 JFXButton (com.jfoenix.controls.JFXButton)3 MaterialDesignIconView (de.jensd.fx.glyphs.materialdesignicons.MaterialDesignIconView)3 MaterialIconView (de.jensd.fx.glyphs.materialicons.MaterialIconView)3 BigInteger (java.math.BigInteger)3 SimpleDateFormat (java.text.SimpleDateFormat)3 ArrayList (java.util.ArrayList)3 Insets (javafx.geometry.Insets)3 ScrollPane (javafx.scene.control.ScrollPane)3 Tooltip (javafx.scene.control.Tooltip)3 GridPane (javafx.scene.layout.GridPane)3 Book (com.iluwatar.cqrs.dto.Book)2 OctIconView (de.jensd.fx.glyphs.octicons.OctIconView)2 Serializable (java.io.Serializable)2 HashMap (java.util.HashMap)2