public JSONObject changePlateLocation(HttpSession session, JSONObject json) { Long plateId = json.getLong("plateId"); String locationBarcode = json.getString("locationBarcode"); try { String newLocation = LimsUtils.lookupLocation(locationBarcode); if (newLocation != null) { User user = securityManager.getUserByLoginName( SecurityContextHolder.getContext().getAuthentication().getName()); // Plate<LinkedList<Plateable>, Plateable> plate = requestManager.<LinkedList<Plateable>, // Plateable> getPlateById(plateId); Plate<? extends List<? extends Plateable>, ? extends Plateable> plate = requestManager.getPlateById(plateId); plate.setLocationBarcode(locationBarcode); /* Note note = new Note(); note.setInternalOnly(true); note.setText("Location changed to " + newLocation + " by " + user.getLoginName() + " on " + new Date()); note.setOwner(user); note.setCreationDate(new Date()); plate.getNotes().add(note); requestManager.saveSampleNote(sample, note); */ requestManager.savePlate(plate); } else { return JSONUtils.SimpleJSONError("New location barcode not recognised"); } } catch (IOException e) { e.printStackTrace(); return JSONUtils.SimpleJSONError(e.getMessage()); } return JSONUtils.SimpleJSONResponse("Plate saved successfully"); }
public JSONObject printPlateBarcodes(HttpSession session, JSONObject json) { try { User user = securityManager.getUserByLoginName( SecurityContextHolder.getContext().getAuthentication().getName()); String serviceName = null; if (json.has("serviceName")) { serviceName = json.getString("serviceName"); } MisoPrintService<File, PrintContext<File>> mps = null; if (serviceName == null) { Collection<MisoPrintService> services = printManager.listPrintServicesByBarcodeableClass(Plate.class); if (services.size() == 1) { mps = services.iterator().next(); } else { return JSONUtils.SimpleJSONError( "No serviceName specified, but more than one available service able to print this barcode type."); } } else { mps = printManager.getPrintService(serviceName); } Queue<File> thingsToPrint = new LinkedList<File>(); JSONArray ss = JSONArray.fromObject(json.getString("plates")); for (JSONObject s : (Iterable<JSONObject>) ss) { try { Long plateId = s.getLong("plateId"); // Plate<LinkedList<Plateable>, Plateable> plate = requestManager.<LinkedList<Plateable>, // Plateable> getPlateById(plateId); Plate<? extends List<? extends Plateable>, ? extends Plateable> plate = requestManager.getPlateById(plateId); // autosave the barcode if none has been previously generated if (plate.getIdentificationBarcode() == null || "".equals(plate.getIdentificationBarcode())) { requestManager.savePlate(plate); } File f = mps.getLabelFor(plate); if (f != null) thingsToPrint.add(f); } catch (IOException e) { e.printStackTrace(); return JSONUtils.SimpleJSONError("Error printing barcodes: " + e.getMessage()); } } PrintJob pj = printManager.print(thingsToPrint, mps.getName(), user); return JSONUtils.SimpleJSONResponse("Job " + pj.getJobId() + " : Barcodes printed."); } catch (MisoPrintException e) { e.printStackTrace(); return JSONUtils.SimpleJSONError("Failed to print barcodes: " + e.getMessage()); } catch (IOException e) { e.printStackTrace(); return JSONUtils.SimpleJSONError("Failed to print barcodes: " + e.getMessage()); } }
public JSONObject saveImportedElements(HttpSession session, JSONObject json) { if (json.has("elements")) { Plate currentPlate = null; Pool currentPool = null; try { String description = json.getString("description"); String creationDate = json.getString("creationDate"); String plateMaterialType = null; if (json.has("plateMaterialType") && !json.getString("plateMaterialType").equals("")) { plateMaterialType = json.getString("plateMaterialType"); } JSONObject elements = json.getJSONObject("elements"); JSONArray pools = JSONArray.fromObject(elements.get("pools")); JSONArray savedPlates = new JSONArray(); ObjectMapper mapper = new ObjectMapper(); for (JSONArray innerPoolList : (Iterable<JSONArray>) pools) { for (JSONObject pool : (Iterable<JSONObject>) innerPoolList) { log.info(pool.toString()); PlatePool platePool = mapper.readValue(pool.toString(), new TypeReference<PlatePool>() {}); currentPool = platePool; for (Plate<LinkedList<Library>, Library> plate : platePool.getPoolableElements()) { JSONObject j = new JSONObject(); // if (json.has("tagBarcode")) { // String tagBarcode = json.getString("tagBarcode"); // // plate.setTagBarcode(requestManager.listAllTagBarcodesByStrategyName()); // } if (plate.getDescription() == null) { plate.setDescription(description); } if (plate.getCreationDate() == null) { // plate.setCreationDate(DateFormat.getInstance().parse(creationDate)); } if (plate.getPlateMaterialType() == null && plateMaterialType != null) { plate.setPlateMaterialType(PlateMaterialType.valueOf(plateMaterialType)); } log.info("Saving plate: " + plate.toString()); currentPlate = plate; long plateId = requestManager.savePlate(plate); j.put("plateId", plateId); savedPlates.add(j); currentPlate = null; } log.info("Saving pool: " + pool.toString()); requestManager.savePool(platePool); currentPool = null; } } JSONObject resp = new JSONObject(); resp.put("plates", savedPlates); return resp; } catch (IOException e) { if (currentPool != null) { log.error( "Error saving pool elements on new plate save. Deleting pool " + currentPool.toString()); // clear out child elements to make sure plate meets delete requirements currentPool.getPoolableElements().clear(); try { requestManager.deletePool(currentPool); } catch (IOException e1) { log.error("Cannot delete pool. Nothing left to do."); e1.printStackTrace(); } } if (currentPlate != null) { log.error( "Error saving plate elements on new plate save. Deleting plate " + currentPlate.toString()); // clear out child elements to make sure plate meets delete requirements currentPlate.getElements().clear(); try { requestManager.deletePlate(currentPlate); } catch (IOException e1) { log.error("Cannot delete plate. Nothing left to do."); e1.printStackTrace(); } } log.error("Caused by..."); e.printStackTrace(); return JSONUtils.SimpleJSONError("Cannot save imported plate: " + e.getMessage()); } } else { return JSONUtils.SimpleJSONError("No valid plates available to save"); } }