List of usage examples for org.hibernate ScrollMode SCROLL_INSENSITIVE
ScrollMode SCROLL_INSENSITIVE
To view the source code for org.hibernate ScrollMode SCROLL_INSENSITIVE.
Click Source Link
From source file:org.opentaps.common.domain.order.SalesOrderLookupRepository.java
License:Open Source License
/** {@inheritDoc} */ public List<OrderViewForListing> findOrders() throws RepositoryException { // convert fromDateStr / thruDateStr into Timestamps if the string versions were given if (UtilValidate.isNotEmpty(fromDateStr)) { fromDate = UtilDate.toTimestamp(fromDateStr, timeZone, locale); }//from w ww.ja v a2s.co m if (UtilValidate.isNotEmpty(thruDateStr)) { thruDate = UtilDate.toTimestamp(thruDateStr, timeZone, locale); } Session session = null; try { // get a hibernate session session = getInfrastructure().getSession(); Criteria criteria = session.createCriteria(OrderHeader.class); // always filter by the current organization criteria.add(Restrictions.eq(OrderHeader.Fields.billFromPartyId.name(), organizationPartyId)); // filters by order type, we only want sales order criteria.add(Restrictions.eq(OrderHeader.Fields.orderTypeId.name(), OrderTypeConstants.SALES_ORDER)); // set the from/thru date filter if they were given if (fromDate != null) { criteria.add(Restrictions.ge(OrderHeader.Fields.orderDate.name(), fromDate)); } if (thruDate != null) { criteria.add(Restrictions.le(OrderHeader.Fields.orderDate.name(), thruDate)); } // filter the role assoc, there is only one customer role per order Criteria roleCriteria = criteria.createAlias("orderRoles", "or"); roleCriteria.add(Restrictions.eq("or.id." + OrderRole.Fields.roleTypeId.name(), RoleTypeConstants.BILL_TO_CUSTOMER)); // filter orders created by the given user (TODO: what use is viewPref as a string here, should be a boolean flag instead ?) if (UtilValidate.isNotEmpty(viewPref)) { criteria.add(Restrictions.eq(OrderHeader.Fields.createdBy.name(), userLoginId)); } // filter by order status if (findActiveOnly || findDesiredOnly) { List<String> statuses = UtilMisc.toList(StatusItemConstants.OrderStatus.ORDER_APPROVED, StatusItemConstants.OrderStatus.ORDER_CREATED, StatusItemConstants.OrderStatus.ORDER_HOLD); if (findActiveOnly) { statuses.add(StatusItemConstants.OrderStatus.ORDER_PROCESSING); } criteria.add(Restrictions.in(OrderHeader.Fields.statusId.name(), statuses)); } // filter by the given orderId string if (UtilValidate.isNotEmpty(orderId)) { criteria.add(Restrictions.ilike(OrderHeader.Fields.orderId.name(), orderId, MatchMode.START)); } // filter by the given externalOrderId string if (UtilValidate.isNotEmpty(externalOrderId)) { criteria.add( Restrictions.ilike(OrderHeader.Fields.externalId.name(), externalOrderId, MatchMode.START)); } // filter by exact matching status, if a statusId was given if (UtilValidate.isNotEmpty(statusId)) { criteria.add(Restrictions.eq(OrderHeader.Fields.statusId.name(), statusId)); } // filter by product store if given if (UtilValidate.isNotEmpty(productStoreId)) { criteria.add(Restrictions.eq(OrderHeader.Fields.productStoreId.name(), productStoreId)); } // filter by the user who created the order if given if (UtilValidate.isNotEmpty(createdBy)) { criteria.add(Restrictions.eq(OrderHeader.Fields.createdBy.name(), createdBy)); } // filter by the given orderName string if (UtilValidate.isNotEmpty(orderName)) { criteria.add(Restrictions.ilike(OrderHeader.Fields.orderName.name(), orderName, MatchMode.START)); } // filter by the given customerPartyId string, from the OrderRole entity if (UtilValidate.isNotEmpty(customerPartyId)) { roleCriteria.add(Restrictions.ilike("or.id." + OrderRole.Fields.partyId.name(), customerPartyId, MatchMode.START)); } // filter by the given purchaseOrderId string, from the OrderItem entity criteria.createAlias("orderItems", "oi"); if (UtilValidate.isNotEmpty(purchaseOrderId)) { criteria.add(Restrictions.ilike("oi." + OrderItem.Fields.correspondingPoId.name(), purchaseOrderId, MatchMode.START)); } // filter by the given productId string, from the OrderItem entity if (UtilValidate.isNotEmpty(productId)) { criteria.add( Restrictions.ilike("oi." + OrderItem.Fields.productId.name(), productId, MatchMode.START)); } // filter by the given shippingAddress string, from the OrderItemShipGroup entity criteria.createAlias("orderItemShipGroups", "oisg"); Criteria address = criteria.createCriteria("oisg.postalAddress"); if (UtilValidate.isNotEmpty(shippingAddress)) { address.add(Restrictions.ilike(PostalAddress.Fields.address1.name(), shippingAddress, MatchMode.ANYWHERE)); } if (UtilValidate.isNotEmpty(shippingCountry)) { address.add(Restrictions.ilike(PostalAddress.Fields.countryGeoId.name(), shippingCountry, MatchMode.EXACT)); } if (UtilValidate.isNotEmpty(shippingStateProvince)) { address.add(Restrictions.ilike(PostalAddress.Fields.stateProvinceGeoId.name(), shippingStateProvince, MatchMode.EXACT)); } if (UtilValidate.isNotEmpty(shippingCity)) { address.add(Restrictions.ilike(PostalAddress.Fields.city.name(), shippingCity, MatchMode.START)); } if (UtilValidate.isNotEmpty(shippingPostalCode)) { address.add(Restrictions.ilike(PostalAddress.Fields.postalCode.name(), shippingPostalCode, MatchMode.START)); } if (UtilValidate.isNotEmpty(shippingToName)) { address.add( Restrictions.ilike(PostalAddress.Fields.toName.name(), shippingToName, MatchMode.START)); } if (UtilValidate.isNotEmpty(shippingAttnName)) { address.add(Restrictions.ilike(PostalAddress.Fields.attnName.name(), shippingAttnName, MatchMode.START)); } // filter by the given lotId and serialNumber, which may come either from // OrderItemShipGrpInvRes -> InventoryItem // or // ItemIssuance -> InventoryItem criteria.createCriteria("orderItemShipGrpInvReses", Criteria.LEFT_JOIN).createCriteria("inventoryItem", "rii", Criteria.LEFT_JOIN); criteria.createCriteria("itemIssuances", Criteria.LEFT_JOIN).createCriteria("inventoryItem", "iii", Criteria.LEFT_JOIN); if (UtilValidate.isNotEmpty(lotId)) { criteria.add(Restrictions.or( Restrictions.ilike("rii." + InventoryItem.Fields.lotId.name(), lotId, MatchMode.START), Restrictions.ilike("iii." + InventoryItem.Fields.lotId.name(), lotId, MatchMode.START))); } if (UtilValidate.isNotEmpty(serialNumber)) { criteria.add(Restrictions.or( Restrictions.ilike("rii." + InventoryItem.Fields.serialNumber.name(), serialNumber, MatchMode.START), Restrictions.ilike("iii." + InventoryItem.Fields.serialNumber.name(), serialNumber, MatchMode.START))); } criteria.createCriteria("trackingCodeOrders", "tco", Criteria.LEFT_JOIN); // specify the fields to return criteria.setProjection(Projections.projectionList() .add(Projections.distinct(Projections.property(OrderHeader.Fields.orderId.name()))) .add(Projections.property(OrderHeader.Fields.orderName.name())) .add(Projections.property(OrderHeader.Fields.statusId.name())) .add(Projections.property(OrderHeader.Fields.grandTotal.name())) .add(Projections.property(OrderHeader.Fields.orderDate.name())) .add(Projections.property(OrderHeader.Fields.currencyUom.name())) .add(Projections.property("or.id." + OrderRole.Fields.partyId.name())) .add(Projections.property("oi." + OrderItem.Fields.correspondingPoId.name())) .add(Projections.property("tco." + TrackingCodeOrder.Fields.trackingCodeId.name()))); Debug.logInfo("criteria.toString() : " + criteria.toString(), MODULE); // set the order by if (orderBy == null) { orderBy = Arrays.asList(OrderHeader.Fields.orderDate.desc()); } // some substitution is needed to fit the hibernate field names // this also maps the calculated fields and indicates the non sortable fields Map<String, String> subs = new HashMap<String, String>(); subs.put("partyId", "or.id.partyId"); subs.put("partyName", "or.id.partyId"); subs.put("orderDateString", "orderDate"); subs.put("shipByDateString", null); subs.put("orderNameId", "orderId"); subs.put("statusDescription", "statusId"); subs.put("correspondingPoId", "oi.correspondingPoId"); subs.put("trackingCodeId", "tco.trackingCodeId"); HibernateUtil.setCriteriaOrder(criteria, orderBy, subs); ScrollableResults results = null; List<OrderViewForListing> results2 = new ArrayList<OrderViewForListing>(); try { // fetch the paginated results results = criteria.scroll(ScrollMode.SCROLL_INSENSITIVE); if (usePagination()) { results.setRowNumber(getPageStart()); } else { results.first(); } // convert them into OrderViewForListing objects which will also calculate or format some fields for display Object[] o = results.get(); int n = 0; // number of results actually read while (o != null) { OrderViewForListing r = new OrderViewForListing(); r.initRepository(this); int i = 0; r.setOrderId((String) o[i++]); r.setOrderName((String) o[i++]); r.setStatusId((String) o[i++]); r.setGrandTotal((BigDecimal) o[i++]); r.setOrderDate((Timestamp) o[i++]); r.setCurrencyUom((String) o[i++]); r.setPartyId((String) o[i++]); r.setCorrespondingPoId((String) o[i++]); r.setTrackingCodeId((String) o[i++]); r.calculateExtraFields(getDelegator(), timeZone, locale); results2.add(r); n++; if (!results.next()) { break; } if (usePagination() && n >= getPageSize()) { break; } o = results.get(); } results.last(); // note: row number starts at 0 setResultSize(results.getRowNumber() + 1); } finally { if (results != null) { results.close(); } } return results2; } catch (InfrastructureException e) { Debug.logError(e, MODULE); throw new RepositoryException(e); } finally { if (session != null) { session.close(); } } }
From source file:org.opentaps.financials.domain.billing.invoice.InvoiceLookupRepository.java
License:Open Source License
/** {@inheritDoc} */ public List<InvoiceViewForListing> findInvoices() throws RepositoryException { // convert from / thru from String into Timestamps if the string versions were given if (UtilValidate.isNotEmpty(fromInvoiceDateString)) { fromInvoiceDate = UtilDate.toTimestamp(fromInvoiceDateString, timeZone, locale); }//from w w w.ja v a2 s .c o m if (UtilValidate.isNotEmpty(thruInvoiceDateString)) { thruInvoiceDate = UtilDate.toTimestamp(thruInvoiceDateString, timeZone, locale); } if (UtilValidate.isNotEmpty(fromDueDateString)) { fromDueDate = UtilDate.toTimestamp(fromDueDateString, timeZone, locale); } if (UtilValidate.isNotEmpty(thruDueDateString)) { thruDueDate = UtilDate.toTimestamp(thruDueDateString, timeZone, locale); } if (UtilValidate.isNotEmpty(fromPaidDateString)) { fromPaidDate = UtilDate.toTimestamp(fromPaidDateString, timeZone, locale); } if (UtilValidate.isNotEmpty(thruPaidDateString)) { thruPaidDate = UtilDate.toTimestamp(thruPaidDateString, timeZone, locale); } Session session = null; try { // get a hibernate session session = getInfrastructure().getSession(); Criteria criteria = session.createCriteria(Invoice.class); // always filter by invoice type criteria.add(Restrictions.eq(Invoice.Fields.invoiceTypeId.name(), invoiceTypeId)); // some id filters if (UtilValidate.isNotEmpty(partyId)) { criteria.add(Restrictions.eq(Invoice.Fields.partyId.name(), partyId)); } if (UtilValidate.isNotEmpty(partyIdFrom)) { criteria.add(Restrictions.eq(Invoice.Fields.partyIdFrom.name(), partyIdFrom)); } if (UtilValidate.isNotEmpty(invoiceId)) { criteria.add(Restrictions.eq(Invoice.Fields.invoiceId.name(), invoiceId)); } if (UtilValidate.isNotEmpty(statusId)) { criteria.add(Restrictions.eq(Invoice.Fields.statusId.name(), statusId)); } if (UtilValidate.isNotEmpty(processingStatusId)) { // this is a special case where we want an empty status if ("_NA_".equals(processingStatusId)) { criteria.add(Restrictions.eq(Invoice.Fields.processingStatusId.name(), null)); } else { criteria.add(Restrictions.eq(Invoice.Fields.processingStatusId.name(), processingStatusId)); } } // set the from/thru date filter if they were given if (fromInvoiceDate != null) { criteria.add(Restrictions.ge(Invoice.Fields.invoiceDate.name(), fromInvoiceDate)); } if (thruInvoiceDate != null) { criteria.add(Restrictions.le(Invoice.Fields.invoiceDate.name(), thruInvoiceDate)); } if (fromDueDate != null) { criteria.add(Restrictions.ge(Invoice.Fields.dueDate.name(), fromDueDate)); } if (thruDueDate != null) { criteria.add(Restrictions.le(Invoice.Fields.dueDate.name(), thruDueDate)); } if (fromPaidDate != null) { criteria.add(Restrictions.ge(Invoice.Fields.paidDate.name(), fromPaidDate)); } if (thruPaidDate != null) { criteria.add(Restrictions.le(Invoice.Fields.paidDate.name(), thruPaidDate)); } // set the from/thru amount filter if they were given if (fromAmount != null) { criteria.add(Restrictions.ge(Invoice.Fields.invoiceTotal.name(), fromAmount)); } if (thruAmount != null) { criteria.add(Restrictions.le(Invoice.Fields.invoiceTotal.name(), thruAmount)); } if (fromOpenAmount != null) { criteria.add(Restrictions.ge(Invoice.Fields.openAmount.name(), fromOpenAmount)); } if (thruOpenAmount != null) { criteria.add(Restrictions.le(Invoice.Fields.openAmount.name(), thruOpenAmount)); } // set the other like filters if they were given if (UtilValidate.isNotEmpty(referenceNumber)) { criteria.add(Restrictions.ilike(Invoice.Fields.referenceNumber.name(), referenceNumber, MatchMode.ANYWHERE)); } if (UtilValidate.isNotEmpty(message)) { criteria.add(Restrictions.ilike(Invoice.Fields.invoiceMessage.name(), message, MatchMode.ANYWHERE)); } // order Id search needs a join with OrderItemBilling if (UtilValidate.isNotEmpty(orderId)) { criteria.createAlias("orderItemBillings", "oib"); criteria.add(Restrictions.eq("oib." + OrderItemBilling.Fields.orderId.name(), orderId)); } // item description search needs a join with InvoiceItem if (UtilValidate.isNotEmpty(itemDescription)) { criteria.createAlias("invoiceItems", "ii"); criteria.add(Restrictions.ilike("ii." + InvoiceItem.Fields.description.name(), itemDescription, MatchMode.ANYWHERE)); } // TODO: accounting tags // specify the fields to return criteria.setProjection(Projections.projectionList() .add(Projections.distinct(Projections.property(Invoice.Fields.invoiceId.name()))) .add(Projections.property(Invoice.Fields.partyId.name())) .add(Projections.property(Invoice.Fields.partyIdFrom.name())) .add(Projections.property(Invoice.Fields.statusId.name())) .add(Projections.property(Invoice.Fields.processingStatusId.name())) .add(Projections.property(Invoice.Fields.invoiceDate.name())) .add(Projections.property(Invoice.Fields.dueDate.name())) .add(Projections.property(Invoice.Fields.currencyUomId.name())) .add(Projections.property(Invoice.Fields.invoiceTotal.name())) .add(Projections.property(Invoice.Fields.openAmount.name())) .add(Projections.property(Invoice.Fields.referenceNumber.name()))); // set the order by if (orderBy == null) { orderBy = Arrays.asList(Invoice.Fields.invoiceDate.desc()); } // some substitution is needed to fit the hibernate field names // this also maps the calculated fields and indicates the non sortable fields Map<String, String> subs = new HashMap<String, String>(); subs.put("partyName", "partyId"); subs.put("partyNameFrom", "partyIdFrom"); subs.put("invoiceDateString", "invoiceDate"); subs.put("dueDateString", "dueDate"); subs.put("statusDescription", "statusId"); subs.put("processingStatusDescription", "processingStatusId"); HibernateUtil.setCriteriaOrder(criteria, orderBy, subs); ScrollableResults results = null; List<InvoiceViewForListing> results2 = new ArrayList<InvoiceViewForListing>(); try { // fetch the paginated results results = criteria.scroll(ScrollMode.SCROLL_INSENSITIVE); if (usePagination()) { results.setRowNumber(getPageStart()); } // convert them into InvoiceViewForListing objects which will also calculate or format some fields for display Object[] o = results.get(); int n = 0; // number of results actually read while (o != null) { InvoiceViewForListing r = new InvoiceViewForListing(); r.initRepository(this); int i = 0; r.setInvoiceId((String) o[i++]); r.setPartyId((String) o[i++]); r.setPartyIdFrom((String) o[i++]); r.setStatusId((String) o[i++]); r.setProcessingStatusId((String) o[i++]); r.setInvoiceDate((Timestamp) o[i++]); r.setDueDate((Timestamp) o[i++]); r.setCurrencyUomId((String) o[i++]); r.setInvoiceTotal((BigDecimal) o[i++]); r.setOpenAmount((BigDecimal) o[i++]); r.setReferenceNumber((String) o[i++]); r.calculateExtraFields(getDelegator(), timeZone, locale); results2.add(r); n++; if (!results.next()) { break; } if (usePagination() && n >= getPageSize()) { break; } o = results.get(); } results.last(); // note: row number starts at 0 setResultSize(results.getRowNumber() + 1); } finally { results.close(); } return results2; } catch (InfrastructureException e) { throw new RepositoryException(e); } finally { if (session != null) { session.close(); } } }
From source file:org.xerela.provider.devices.DeviceResolutionElf.java
License:Mozilla Public License
/** * Populates a {@link PageData} with the results for the given criteria. * @param pageData The page to retrieve. * @param criteria The query./*from w w w .j av a2 s . c o m*/ * @param sortColumn The sort column or <code>null</code> * @param descending <code>true</code> for descending sort, <code>false</code> otherwise. * @return The populated page. */ public static PageData populatePageData(PageData pageData, Criteria criteria, String sortColumn, boolean descending) { if (LOGGER.isDebugEnabled()) { LOGGER.debug("populatePageData from criteria: " + criteria.toString()); //$NON-NLS-1$ } criteria.scroll(ScrollMode.SCROLL_INSENSITIVE); if (pageData.getOffset() == 0) { // Set the total result size into the page data. criteria.setProjection(Projections.count(ATTR_DEVICE_ID)); Object uniqueResult = criteria.uniqueResult(); if (uniqueResult instanceof Integer) { pageData.setTotal((Integer) uniqueResult); } else if (uniqueResult instanceof Long) { pageData.setTotal(((Long) uniqueResult).intValue()); } else { pageData.setTotal(((BigInteger) uniqueResult).intValue()); } criteria.setProjection(null); } if (sortColumn != null) { if (sortColumn.equals(ATTR_IP_ADDRESS)) { criteria.addOrder(descending ? Order.desc(ATTR_IP_HIGH) : Order.asc(ATTR_IP_HIGH)) .addOrder(descending ? Order.desc(ATTR_IP_LOW) : Order.asc(ATTR_IP_LOW)); } else { criteria.addOrder((descending ? Order.desc(sortColumn.trim()) : Order.asc(sortColumn.trim()))); } } List<ZDeviceLite> list = new ArrayList<ZDeviceLite>(); ScrollableResults scroll = criteria.scroll(); while (scroll.next()) { Object[] objects = scroll.get(); list.add((ZDeviceLite) objects[0]); } scroll.close(); pageData.setDevices(list.toArray(new ZDeviceLite[0])); return pageData; }
From source file:org.xerela.provider.scheduler.Scheduler.java
License:Mozilla Public License
/** {@inheritDoc} */ public PageData getExecutionData(PageData pageData, String sortColumn, boolean descending) { Session session = SchedulerActivator.getSessionFactory().getCurrentSession(); Criteria criteria = session.createCriteria(ExecutionData.class).add(Restrictions.isNotNull("startTime")) .setFirstResult(pageData.getOffset()).setMaxResults(pageData.getPageSize()); if (pageData.getOffset() == 0) { // Set the total result size into the page data. criteria.setProjection(Projections.count("id")); Integer total = (Integer) criteria.uniqueResult(); pageData.setTotal(total);//from w w w . j av a2 s . com criteria.setProjection(null); } if (sortColumn != null) { criteria.addOrder((descending ? Order.desc(sortColumn.trim()) : Order.asc(sortColumn.trim()))); } List<ExecutionData> list = new ArrayList<ExecutionData>(); ScrollableResults scroll = criteria.scroll(ScrollMode.SCROLL_INSENSITIVE); while (scroll.next()) { list.add((ExecutionData) scroll.get(0)); } scroll.close(); pageData.setExecutionData(list); return pageData; }
From source file:org.xerela.provider.telemetry.TelemetryProvider.java
License:Mozilla Public License
/** {@inheritDoc} */ @SuppressWarnings({ "unchecked", "nls" }) public MacPageData getMacTable(MacPageData pageData, String ipAddress, String managedNetwork) { ZDeviceCore device = getDevice(ipAddress, managedNetwork); if (device == null) { pageData.setMacEntries(new MacTableEntry[0]); pageData.setTotal(0);/*from w ww . j av a 2 s . c om*/ return pageData; } boolean ownTransaction = TransactionElf.beginOrJoinTransaction(); try { Session session = TelemetryActivator.getSessionFactory().getCurrentSession(); String fromClause = "FROM discovery_mac WHERE device_id = " + device.getDeviceId(); SQLQuery query = session .createSQLQuery("SELECT mac_address, interface, vlan " + fromClause + " ORDER BY interface"); query.addScalar("mac_address", Hibernate.LONG); query.addScalar("interface", Hibernate.STRING); query.addScalar("vlan", Hibernate.STRING); query.setFirstResult(pageData.getOffset()).setMaxResults(pageData.getPageSize()); query.scroll(ScrollMode.SCROLL_INSENSITIVE); List<Object[]> resultList = (List<Object[]>) query.list(); if (resultList == null || resultList.isEmpty()) { pageData.setMacEntries(new MacTableEntry[0]); pageData.setTotal(0); return pageData; } else { if (pageData.getOffset() == 0) { // Set the total result size into the page data. query = session.createSQLQuery("SELECT count(mac_address) " + fromClause); pageData.setTotal(getCount(query)); } List<MacTableEntry> macTable = new ArrayList<MacTableEntry>(); for (Object[] resultEntry : resultList) { MacTableEntry entry = new MacTableEntry(); entry.setMacAddress((Long) resultEntry[0]); entry.setPort((String) resultEntry[1]); entry.setVlan((String) resultEntry[2]); macTable.add(entry); } pageData.setMacEntries(macTable.toArray(new MacTableEntry[0])); return pageData; } } finally { if (ownTransaction) { TransactionElf.commit(); } } }
From source file:org.xerela.provider.telemetry.TelemetryProvider.java
License:Mozilla Public License
/** {@inheritDoc} */ @SuppressWarnings({ "unchecked", "nls" }) public ArpPageData getArpTable(ArpPageData pageData, String ipAddress, String managedNetwork) { ZDeviceCore device = getDevice(ipAddress, managedNetwork); if (device == null) { pageData.setArpEntries(new ArpTableEntry[0]); pageData.setTotal(0);/*w w w. java 2 s . c o m*/ return pageData; } boolean ownTransaction = TransactionElf.beginOrJoinTransaction(); try { Session session = TelemetryActivator.getSessionFactory().getCurrentSession(); String fromClause = "FROM discovery_arp arp WHERE arp.device_id = " + device.getDeviceId(); SQLQuery query = session.createSQLQuery( "SELECT ip_address, mac_address, interface " + fromClause + " ORDER BY ip_address"); query.addScalar("ip_address", Hibernate.STRING); query.addScalar("mac_address", Hibernate.LONG); query.addScalar("interface", Hibernate.STRING); query.setFirstResult(pageData.getOffset()).setMaxResults(pageData.getPageSize()); query.scroll(ScrollMode.SCROLL_INSENSITIVE); List<Object[]> resultList = (List<Object[]>) query.list(); if (resultList == null || resultList.isEmpty()) { pageData.setArpEntries(new ArpTableEntry[0]); pageData.setTotal(0); return pageData; } else { if (pageData.getOffset() == 0) { // Set the total result size into the page data. query = session.createSQLQuery("SELECT count(arp.ip_address) " + fromClause); pageData.setTotal(getCount(query)); } List<ArpTableEntry> arpTable = new ArrayList<ArpTableEntry>(); for (Object[] resultEntry : resultList) { ArpTableEntry entry = new ArpTableEntry(); entry.setIpAddress((String) resultEntry[0]); entry.setMacAddress((Long) resultEntry[1]); entry.setInterfaceName((String) resultEntry[2]); arpTable.add(entry); } pageData.setArpEntries(arpTable.toArray(new ArpTableEntry[0])); return pageData; } } finally { if (ownTransaction) { TransactionElf.commit(); } } }
From source file:org.xerela.provider.telemetry.TelemetryProvider.java
License:Mozilla Public License
/** * {@inheritDoc}//from www. j a va 2 s . c om */ @SuppressWarnings({ "unchecked", "nls" }) public DeviceArpPageData getArpEntries(DeviceArpPageData pageData, String networkAddress, String sort, boolean descending) { StringBuilder selectClause = new StringBuilder( "SELECT d.ip_address as device, d.network as managedNetwork, arp.device_id as device_id, arp.ip_address as ipAddress, arp.mac_address as macAddress, arp.interface as interfaceName"); StringBuilder fromClause = new StringBuilder( " FROM discovery_arp arp LEFT JOIN device d on arp.device_id = d.device_id"); if (networkAddress.indexOf('/') > 0) { Long[] hiLoRange = NetworkAddressElf.getHiLoRange(networkAddress); if (hiLoRange[0] == null) { if (NetworkAddressElf.isIPv6AddressOrMask(networkAddress)) { String[] ipAndCidr = networkAddress.split("/"); long[] hiLo = NetworkAddressElf.getHiLo(ipAndCidr[0]); fromClause.append(String.format(" WHERE arp.ip_low BETWEEN %d AND %d AND arp.ip_high=%d", hiLoRange[2], hiLoRange[1], hiLo[0])); } else { fromClause.append( String.format(" WHERE arp.ip_low BETWEEN %d AND %d", hiLoRange[2], hiLoRange[1])); } } else { fromClause .append(String.format(" WHERE arp.ip_high BETWEEN %d AND %d", hiLoRange[1], hiLoRange[0])); } } else { long[] hiLo = NetworkAddressElf.getHiLo(networkAddress); fromClause.append(String.format(" WHERE arp.ip_high=%d AND arp.ip_low=%d", hiLo[0], hiLo[1])); } selectClause.append(fromClause); if (sort != null) { selectClause.append(" ORDER BY ").append(sort); if (descending) { selectClause.append(" DESC"); } } boolean ownTransaction = TransactionElf.beginOrJoinTransaction(); try { Session session = TelemetryActivator.getSessionFactory().getCurrentSession(); SQLQuery query = session.createSQLQuery(selectClause.toString()); query.addScalar("device", Hibernate.STRING); query.addScalar("managedNetwork", Hibernate.STRING); query.addScalar("device_id", Hibernate.INTEGER); query.addScalar("ipAddress", Hibernate.STRING); query.addScalar("macAddress", Hibernate.LONG); query.addScalar("interfaceName", Hibernate.STRING); query.setFirstResult(pageData.getOffset()).setMaxResults(pageData.getPageSize()); query.scroll(ScrollMode.SCROLL_INSENSITIVE); List<Object[]> resultList = (List<Object[]>) query.list(); if (resultList == null || resultList.isEmpty()) { pageData.setArpEntries(new DeviceArpTableEntry[0]); pageData.setTotal(0); return pageData; } else { if (pageData.getOffset() == 0) { // Set the total result size into the page data. query = session.createSQLQuery("SELECT count(arp.ip_address) " + fromClause.toString()); pageData.setTotal(getCount(query)); } List<DeviceArpTableEntry> arpTable = new ArrayList<DeviceArpTableEntry>(); for (Object[] resultEntry : resultList) { DeviceArpTableEntry entry = new DeviceArpTableEntry(); entry.setDevice((String) resultEntry[0]); entry.setManagedNetwork((String) resultEntry[1]); entry.setDeviceId((Integer) resultEntry[2]); entry.setIpAddress((String) resultEntry[3]); entry.setMacAddress((Long) resultEntry[4]); entry.setInterfaceName((String) resultEntry[5]); arpTable.add(entry); } pageData.setArpEntries(arpTable.toArray(new DeviceArpTableEntry[0])); return pageData; } } finally { if (ownTransaction) { TransactionElf.commit(); } } }
From source file:vnpt.media.efinder.model.PaginationResult.java
public PaginationResult(Query query, int page, int maxResult, int maxNavigationPage) { final int pageIndex = page - 1 < 0 ? 0 : page - 1; int fromRecordIndex = pageIndex * maxResult; int maxRecordIndex = fromRecordIndex + maxResult; ScrollableResults resultScroll = query.scroll(ScrollMode.SCROLL_INSENSITIVE); //resultScroll.g List results = new ArrayList<>(); boolean hasResult = resultScroll.first(); if (hasResult) { // Cuon toi vi tri hasResult = resultScroll.scroll(fromRecordIndex); if (hasResult) { do {//w w w . ja v a 2 s. com E record = (E) resultScroll.get(0); results.add(record); } while (resultScroll.next()// && resultScroll.getRowNumber() >= fromRecordIndex && resultScroll.getRowNumber() < maxRecordIndex); } // chuyen toi ban ghi cuoi resultScroll.last(); } // Tong so ban ghi this.totalRecords = resultScroll.getRowNumber() + 1; this.currentPage = pageIndex + 1; this.list = results; this.maxResult = maxResult; this.totalPages = (this.totalRecords / this.maxResult); if (totalRecords % this.maxResult != 0) { this.totalPages = this.totalPages + 1; } this.maxNavigationPage = totalPages; if (maxNavigationPage < totalPages) { this.maxNavigationPage = maxNavigationPage; } this.calcNavigationPages(); }