use of org.eclipse.kapua.commons.model.query.predicate.AndPredicate in project kapua by eclipse.
the class AbstractKapuaConfigurableService method setConfigValues.
@Override
public void setConfigValues(KapuaId scopeId, Map<String, Object> values) throws KapuaException {
KapuaLocator locator = KapuaLocator.getInstance();
AuthorizationService authorizationService = locator.getService(AuthorizationService.class);
PermissionFactory permissionFactory = locator.getFactory(PermissionFactory.class);
authorizationService.checkPermission(permissionFactory.newPermission(domain, Actions.write, scopeId));
KapuaTocd ocd = this.getConfigMetadata();
validateConfigurations(this.pid, ocd, values);
Properties props = toProperties(values);
AndPredicate predicate = new AndPredicate().and(new AttributePredicate<String>("pid", this.pid, Operator.EQUAL)).and(new AttributePredicate<KapuaId>("scopeId", scopeId, Operator.EQUAL));
ServiceConfigQueryImpl query = new ServiceConfigQueryImpl(scopeId);
query.setPredicate(predicate);
ServiceConfig serviceConfig = null;
EntityManager em = this.entityManagerFactory.createEntityManager();
ServiceConfigListResultImpl result = ServiceConfigDAO.query(em, ServiceConfig.class, ServiceConfigImpl.class, new ServiceConfigListResultImpl(), query);
// In not exists create then return
if (result == null || result.getSize() == 0) {
ServiceConfigImpl serviceConfigNew = new ServiceConfigImpl(scopeId);
serviceConfigNew.setPid(this.pid);
serviceConfigNew.setConfigurations(props);
serviceConfig = this.create(em, serviceConfigNew);
return;
}
// If exists update it
serviceConfig = result.getItem(0);
serviceConfig.setConfigurations(props);
this.update(em, serviceConfig);
return;
}
use of org.eclipse.kapua.commons.model.query.predicate.AndPredicate in project kapua by eclipse.
the class AbstractKapuaConfigurableService method getConfigValues.
@Override
public Map<String, Object> getConfigValues(KapuaId scopeId) throws KapuaException {
KapuaLocator locator = KapuaLocator.getInstance();
AuthorizationService authorizationService = locator.getService(AuthorizationService.class);
PermissionFactory permissionFactory = locator.getFactory(PermissionFactory.class);
authorizationService.checkPermission(permissionFactory.newPermission(domain, Actions.read, scopeId));
AndPredicate predicate = new AndPredicate().and(new AttributePredicate<String>("pid", this.pid, Operator.EQUAL)).and(new AttributePredicate<KapuaId>("scopeId", scopeId, Operator.EQUAL));
ServiceConfigQueryImpl query = new ServiceConfigQueryImpl(scopeId);
query.setPredicate(predicate);
Properties properties = null;
EntityManager em = this.entityManagerFactory.createEntityManager();
ServiceConfigListResult result = ServiceConfigDAO.query(em, ServiceConfig.class, ServiceConfigImpl.class, new ServiceConfigListResultImpl(), query);
if (result != null && result.getSize() > 0)
properties = result.getItem(0).getConfigurations();
KapuaTocd ocd = this.getConfigMetadata();
return toValues(ocd, properties);
}
use of org.eclipse.kapua.commons.model.query.predicate.AndPredicate in project kapua by eclipse.
the class GwtDeviceServiceImpl method findDeviceEvents.
public PagingLoadResult<GwtDeviceEvent> findDeviceEvents(PagingLoadConfig loadConfig, GwtDevice gwtDevice, Date startDate, Date endDate) throws GwtKapuaException {
ArrayList<GwtDeviceEvent> gwtDeviceEvents = new ArrayList<GwtDeviceEvent>();
BasePagingLoadResult<GwtDeviceEvent> gwtResults = null;
KapuaLocator locator = KapuaLocator.getInstance();
DeviceEventService des = locator.getService(DeviceEventService.class);
DeviceEventFactory deviceEventFactory = locator.getFactory(DeviceEventFactory.class);
try {
// prepare the query
BasePagingLoadConfig bplc = (BasePagingLoadConfig) loadConfig;
DeviceEventQuery query = deviceEventFactory.newQuery(KapuaEid.parseShortId(gwtDevice.getScopeId()));
KapuaAndPredicate andPredicate = new AndPredicate();
andPredicate.and(new AttributePredicate<KapuaId>(DeviceEventPredicates.DEVICE_ID, KapuaEid.parseShortId(gwtDevice.getId())));
// .and(new AttributePredicate<Date>(DeviceEventPredicates.RECEIVED_ON, startDate, Operator.GREATER_THAN));
// .and(new AttributePredicate<Date>(DeviceEventPredicates.RECEIVED_ON, startDate, Operator.LESS_THAN));
query.setPredicate(andPredicate);
query.setSortCriteria(new FieldSortCriteria(DeviceEventPredicates.RECEIVED_ON, SortOrder.DESCENDING));
query.setOffset(bplc.getOffset());
query.setLimit(bplc.getLimit());
// query execute
KapuaListResult<DeviceEvent> deviceEvents = des.query(query);
// prepare results
for (DeviceEvent deviceEvent : deviceEvents.getItems()) {
gwtDeviceEvents.add(KapuaGwtConverter.convert(deviceEvent));
}
gwtResults = new BasePagingLoadResult<GwtDeviceEvent>(gwtDeviceEvents);
gwtResults.setOffset(loadConfig.getOffset());
gwtResults.setTotalLength((int) des.count(query));
} catch (Throwable t) {
KapuaExceptionHandler.handle(t);
}
return gwtResults;
}
use of org.eclipse.kapua.commons.model.query.predicate.AndPredicate in project kapua by eclipse.
the class DeviceExporterServlet method internalDoGet.
private void internalDoGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
// parameter extraction
String format = request.getParameter("format");
String scopeIdString = request.getParameter("scopeIdString");
// data exporter
DeviceExporter deviceExporter = null;
if ("xls".equals(format)) {
deviceExporter = new DeviceExporterExcel(response);
} else if ("csv".equals(format)) {
deviceExporter = new DeviceExporterCsv(response);
} else {
throw new IllegalArgumentException("format");
}
if (scopeIdString == null || scopeIdString.isEmpty()) {
throw new IllegalArgumentException("account");
}
deviceExporter.init(scopeIdString);
//
// get the devices and append them to the exporter
KapuaLocator locator = KapuaLocator.getInstance();
DeviceRegistryService drs = locator.getService(DeviceRegistryService.class);
DeviceFactory drf = locator.getFactory(DeviceFactory.class);
int resultsCount = 0;
int offset = 0;
// paginate through the matching message
DeviceQuery dq = drf.newQuery(KapuaEid.parseShortId(scopeIdString));
dq.setLimit(250);
// Inserting filter parameter if specified
AndPredicate andPred = new AndPredicate();
String clientId = request.getParameter("clientId");
if (clientId != null && !clientId.isEmpty()) {
andPred = andPred.and(new AttributePredicate<String>(DevicePredicates.CLIENT_ID, clientId, Operator.STARTS_WITH));
}
String displayName = request.getParameter("displayName");
if (displayName != null && !displayName.isEmpty()) {
andPred = andPred.and(new AttributePredicate<String>(DevicePredicates.DISPLAY_NAME, displayName, Operator.STARTS_WITH));
}
String serialNumber = request.getParameter("serialNumber");
if (serialNumber != null && !serialNumber.isEmpty()) {
andPred = andPred.and(new AttributePredicate<String>(DevicePredicates.SERIAL_NUMBER, serialNumber));
}
String deviceStatus = request.getParameter("deviceStatus");
if (deviceStatus != null && !deviceStatus.isEmpty()) {
andPred = andPred.and(new AttributePredicate<DeviceStatus>(DevicePredicates.STATUS, DeviceStatus.valueOf(deviceStatus)));
}
String sortAttribute = request.getParameter("sortAttribute");
if (sortAttribute != null && !sortAttribute.isEmpty()) {
String sortOrderString = request.getParameter("sortOrder");
SortOrder sortOrder;
if (sortOrderString != null && !sortOrderString.isEmpty()) {
sortOrder = SortOrder.valueOf(sortOrderString);
} else {
sortOrder = SortOrder.ASCENDING;
}
if (sortAttribute.compareTo("CLIENT_ID") == 0) {
dq.setSortCriteria(new FieldSortCriteria(DevicePredicates.CLIENT_ID, sortOrder));
} else if (sortAttribute.compareTo("DISPLAY_NAME") == 0) {
dq.setSortCriteria(new FieldSortCriteria(DevicePredicates.DISPLAY_NAME, sortOrder));
} else if (sortAttribute.compareTo("LAST_EVENT_ON") == 0) {
dq.setSortCriteria(new FieldSortCriteria(DevicePredicates.LAST_EVENT_ON, sortOrder));
}
}
dq.setPredicate(andPred);
KapuaListResult<Device> results = null;
do {
dq.setOffset(offset);
results = drs.query(dq);
deviceExporter.append(results);
offset += results.getSize();
resultsCount += results.getSize();
} while (results.getSize() > 0);
// Close things up
deviceExporter.close();
} catch (IllegalArgumentException iae) {
response.sendError(400, "Illegal value for query parameter: " + iae.getMessage());
return;
} catch (KapuaEntityNotFoundException eenfe) {
response.sendError(400, eenfe.getMessage());
return;
} catch (KapuaUnauthenticatedException eiae) {
response.sendError(401, eiae.getMessage());
return;
} catch (KapuaIllegalAccessException eiae) {
response.sendError(403, eiae.getMessage());
return;
} catch (Exception e) {
s_logger.error("Error creating device export", e);
throw new ServletException(e);
}
}
use of org.eclipse.kapua.commons.model.query.predicate.AndPredicate in project kapua by eclipse.
the class Devices method getEvents.
/**
* Returns the events for the device identified by the specified
* ClientID under the account of the currently connected user.
* <p>
* If the flag DeviceEventsResult.limitExceeded is set, the maximum number
* of entries to be returned has been reached, more events exist and can
* be read by moving the offset forward in a new request
*
* @param deviceId
* The client ID of the device requested.
* @param limit
* Maximum number of entries to be returned.
* @param offset
* Starting offset for the entries to be returned.
* @param startDate
* Start date of the date range requested. The parameter
* is expressed as a long counting the number of milliseconds since
* January 1, 1970, 00:00:00 GMT. The default value of 0 means no
* start date. Alternatively, the date can be expressed as a string
* following the ISO 8601 format.
* @param endDate
* End date of the date range requested. The parameter
* is expressed as a long counting the number of milliseconds since
* January 1, 1970, 00:00:00 GMT. The default value of 0 means no
* start date. Alternatively, the date can be expressed as a string
* following the ISO 8601 format.
* @return The list of Events
*/
@GET
@Path("{deviceId}/events")
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
public DeviceEventListResult getEvents(@PathParam("deviceId") String deviceId, @QueryParam("limit") @DefaultValue("50") int limit, @QueryParam("offset") int offset, @QueryParam("startDate") String startDate, @QueryParam("endDate") String endDate) {
DeviceEventListResult deviceEvents = eventFactory.newDeviceListResult();
try {
KapuaId scopeId = KapuaSecurityUtils.getSession().getScopeId();
KapuaId id = KapuaEid.parseShortId(deviceId);
DeviceEventQuery query = eventFactory.newQuery(scopeId);
KapuaAndPredicate andPredicate = new AndPredicate();
andPredicate.and(new AttributePredicate<>(DeviceEventPredicates.DEVICE_ID, id));
// TODO Date filter not working?
if (startDate != null) {
DateTime parsedStartDate = DateTime.parse(startDate);
andPredicate = andPredicate.and(new AttributePredicate<>(DeviceEventPredicates.RECEIVED_ON, parsedStartDate.toDate(), KapuaAttributePredicate.Operator.GREATER_THAN));
}
if (endDate != null) {
DateTime parsedEndDate = DateTime.parse(endDate);
andPredicate = andPredicate.and(new AttributePredicate<>(DeviceEventPredicates.RECEIVED_ON, parsedEndDate.toDate(), KapuaAttributePredicate.Operator.LESS_THAN));
}
query.setPredicate(andPredicate);
query.setSortCriteria(new FieldSortCriteria(DeviceEventPredicates.RECEIVED_ON, FieldSortCriteria.SortOrder.DESCENDING));
query.setOffset(offset);
query.setLimit(limit);
// query execute
deviceEvents = (DeviceEventListResult) eventService.query(query);
} catch (Throwable t) {
handleException(t);
}
return returnNotNullEntity(deviceEvents);
}
Aggregations