@Override public void execute(HttpServletRequest req, HttpServletResponse resp, ConfigService configService) throws IOException { logger.debug("Getting PV's matching wildcard or regex for this appliance."); int limit = 500; String limitParam = req.getParameter("limit"); if (limitParam != null) { limit = Integer.parseInt(limitParam); } String nameToMatch = null; if (req.getParameter("regex") != null) { nameToMatch = req.getParameter("regex"); logger.debug("Finding PV's for regex " + nameToMatch); } if (req.getParameter("pv") != null) { nameToMatch = req.getParameter("pv"); nameToMatch = nameToMatch.replace("*", ".*"); nameToMatch = nameToMatch.replace("?", "."); logger.debug("Finding PV's for glob (converted to regex)" + nameToMatch); } Set<String> pvNamesMatchingRegex = configService.getPVsForApplianceMatchingRegex(nameToMatch); LinkedList<String> pvNames = new LinkedList<String>(); if (limit == -1) { pvNames.addAll(pvNamesMatchingRegex); } else { int pvCount = 0; for (String matchedName : pvNamesMatchingRegex) { pvNames.add(matchedName); pvCount++; if (pvCount >= limit) break; } } resp.setContentType(MimeTypeConstants.APPLICATION_JSON); try (PrintWriter out = resp.getWriter()) { out.println(JSONValue.toJSONString(pvNames)); } catch (Exception ex) { logger.error( "Exception getting all pvs on appliance " + configService.getMyApplianceInfo().getIdentity(), ex); resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); } }
@Override public void execute(HttpServletRequest req, HttpServletResponse resp, ConfigService configService) throws IOException { String pvName = req.getParameter("pv"); logger.debug("Checking to see if we are archiving PV " + pvName); resp.addHeader(MimeResponse.ACCESS_CONTROL_ALLOW_ORIGIN, "*"); resp.setContentType(MimeTypeConstants.APPLICATION_JSON); if (pvName == null || pvName.equals("")) { resp.sendError(HttpServletResponse.SC_NOT_FOUND); return; } // String pvNameFromRequest = pvName; String realName = configService.getRealNameForAlias(pvName); if (realName != null) pvName = realName; HashMap<String, String> retVal = new HashMap<String, String>(); PVTypeInfo typeInfo = configService.getTypeInfoForPV(pvName); if (typeInfo == null) { typeInfo = configService.getTypeInfoForPV(PVNames.stripFieldNameFromPVName(pvName)); if (typeInfo == null) { retVal.put("status", Boolean.FALSE.toString()); } else { retVal.put("status", Boolean.TRUE.toString()); } } else { retVal.put("status", Boolean.TRUE.toString()); } try (PrintWriter out = resp.getWriter()) { out.println(JSONValue.toJSONString(retVal)); } catch (Exception ex) { logger.error("Exception checking if we are archiving pv " + pvName, ex); resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); } }
/** * Generate an EPICS PV. * * @param name The PV name. * @param configservice The config service used by this pv * @param isControlPV true if this is a pv controlling other pvs */ EPICS_V3_PV( final String name, ConfigService configservice, boolean isControlPV, ArchDBRTypes archDBRTypes, int jcaCommandThreadId) { this(name, false, configservice, jcaCommandThreadId); this.archDBRType = archDBRTypes; if (archDBRTypes != null) { this.con = configservice.getArchiverTypeSystem().getJCADBRConstructor(archDBRType); } if (isControlPV) { this.controlledPVList = new ArrayList<String>(); } }
@Override public void execute(HttpServletRequest req, HttpServletResponse resp, ConfigService configService) throws IOException { String pvName = req.getParameter("pv"); if (pvName == null || pvName.equals("")) { resp.sendError(HttpServletResponse.SC_BAD_REQUEST); return; } Event event = configService.getETLLookup().getLatestEventFromDataStores(pvName); if (event != null) { resp.setContentType(MimeTypeConstants.APPLICATION_JSON); HashMap<String, String> result = new HashMap<String, String>(); result.put("timestamp", TimeUtils.convertToISO8601String(event.getEventTimeStamp())); try (PrintWriter out = resp.getWriter()) { out.println(JSONValue.toJSONString(result)); } } else { resp.sendError(HttpServletResponse.SC_NOT_FOUND); return; } }
/** MonitorListener interface. */ @Override public void monitorChanged(final MonitorEvent ev) { // final Logger log = Activator.getLogger(); // This runs in a CA thread. // Ignore values that arrive after stop() if (!running) { return; } if (subscription == null) { return; } if (ev.getStatus() == null || !ev.getStatus().isSuccessful()) { return; } if (controlledPVList != null) { // this pv is control pv. try { updateAllControlPVEnablMent(ev); } catch (Exception e) { logger.error( "exception in monitor changed function when updatinng controlled pvs' enablement for " + this.name, e); } return; } state = PVConnectionState.GotMonitor; if (!connected) connected = true; try { try { DBR dbr = ev.getDBR(); if (dbr == null) { return; } if (this.name.endsWith(".RTYP")) { String rtypName = (((DBR_String) dbr).getStringValue())[0]; dbrtimeevent = new POJOEvent( ArchDBRTypes.DBR_SCALAR_STRING, TimeUtils.now(), new ScalarStringSampleValue(rtypName), 0, 0); return; } // dbr.printInfo(); ArchDBRTypes generatedDBRType = JCA2ArchDBRType.valueOf(dbr); if (archDBRType == null) { archDBRType = generatedDBRType; con = configservice.getArchiverTypeSystem().getJCADBRConstructor(archDBRType); } else { assert (con != null); if (generatedDBRType != archDBRType) { logger.warn( "The type of PV " + this.name + " has changed from " + archDBRType + " to " + generatedDBRType); fireDroppedSample(PVListener.DroppedReason.TYPE_CHANGE); return; } } dbrtimeevent = con.newInstance(dbr); totalMetaInfo.computeRate(dbrtimeevent); dbr = null; } catch (Exception e) { logger.error( "exception in monitor changed function when converting DBR to dbrtimeevent for pv " + this.name, e); } updataMetaDataInParentPV(dbrtimeevent); // if this pv has meta data , handle here if (hasMetaField) { // //////////handle the field value when it // changes////////////// if (changedarchiveFieldsData.size() > 0) { logger.debug( "Adding changed field for pv " + name + " with " + changedarchiveFieldsData.size()); HashMap<String, String> tempHashMap = new HashMap<String, String>(); tempHashMap.putAll(changedarchiveFieldsData); // dbrtimeevent.s dbrtimeevent.setFieldValues(tempHashMap, true); changedarchiveFieldsData.clear(); } // ////////////////////////// // ////////////save all the fields once every day////////////// if (this.lastTimeStampWhenSavingarchiveFields == null) { if (allarchiveFieldsData.size() != 0) { saveMetaDataOnceEveryDay(); } } else { Calendar currentCalendar = Calendar.getInstance(); currentCalendar.add(Calendar.DAY_OF_MONTH, -1); if (currentCalendar.after(lastTimeStampWhenSavingarchiveFields)) { // Calendar currentCalendar2=Calendar.getInstance(); saveMetaDataOnceEveryDay(); } } // ////////////////////////////// } fireValueUpdate(); } catch (final Exception ex) { logger.error("exception in monitor changed for pv " + this.name, ex); } }