/** * ** Gets a virtual DBRecord from the specified remote service ** @param servReq The remote web * service ** @return The virtual DBRecord (cannot be saved or reloaded) */ @SuppressWarnings("unchecked") public gDBR getVirtualDBRecord(final ServiceRequest servReq) throws DBException { String CMD_dbget = DBFactory.CMD_dbget; String TAG_Response = servReq.getTagResponse(); String TAG_Record = DBFactory.TAG_Record; String ATTR_command = servReq.getAttrCommand(); String ATTR_result = servReq.getAttrResult(); /* send request / get response */ Document xmlDoc = null; try { xmlDoc = servReq.sendRequest( CMD_dbget, new ServiceRequest.RequestBody() { public StringBuffer appendRequestBody(StringBuffer sb, int indent) { return DBRecordKey.this.toRequestXML(sb, indent); } }); } catch (IOException ioe) { Print.logException("Error", ioe); throw new DBException("Request read error", ioe); } /* parse 'GTSResponse' */ Element gtsResponse = xmlDoc.getDocumentElement(); if (!gtsResponse.getTagName().equalsIgnoreCase(TAG_Response)) { Print.logError("Request XML does not start with '%s'", TAG_Response); throw new DBException("Response XML does not begin eith '" + TAG_Response + "'"); } /* request command/argument */ String cmd = StringTools.trim(gtsResponse.getAttribute(ATTR_command)); String result = StringTools.trim(gtsResponse.getAttribute(ATTR_result)); if (StringTools.isBlank(result)) { result = StringTools.trim(gtsResponse.getAttribute("type")); } if (!result.equalsIgnoreCase("success")) { Print.logError("Response indicates failure"); throw new DBException("Response does not indicate 'success'"); } /* Record */ NodeList rcdList = XMLTools.getChildElements(gtsResponse, TAG_Record); if (rcdList.getLength() <= 0) { Print.logError("No 'Record' tags"); throw new DBException("GTSResponse does not contain any 'Record' tags"); } Element rcdElem = (Element) rcdList.item(0); /* return DBRecord */ gDBR dbr = (gDBR) DBFactory.parseXML_DBRecord(rcdElem); dbr.setVirtual(true); return dbr; }
// [System][Manufacturer][SubSystem][Problem] eg. "P0071" Powertrain // References: // http://www.obd-codes.com/trouble_codes/ // http://obdcon.sourceforge.net/2010/06/obd-ii-pids/ public static long EncodeFault_OBDII(String dtcStr) { long faultCode = TYPE_OBDII; /* trim */ dtcStr = StringTools.trim(dtcStr); if (dtcStr.indexOf(",") >= 0) { dtcStr = dtcStr.substring(0, dtcStr.indexOf(",")).trim(); } if (dtcStr.equals("")) { return faultCode; } /* check length */ if (dtcStr.length() == 4) { dtcStr = "U" + dtcStr; // unknown } else if (dtcStr.length() != 5) { return faultCode; } /* active */ faultCode |= EncodeActive(true); // [ACTIVE_MASK] 0x0100000000000000 /* encode system cjaracter (ie. "Powertrain") */ faultCode |= EncodeSystem(dtcStr.charAt(0)); // [MID_MASK] 0x00FFFFFF00000000 /* encode manufacturer specific and subsystem */ int mfgCode = StringTools.parseInt(dtcStr.substring(1, 2), 0); int spid = (mfgCode != 0) ? 0x8000 : 0; int subSys = StringTools.parseInt(dtcStr.substring(2, 5), 0); spid |= (subSys & 0xFFF); faultCode |= EncodeSPID(spid); // [SPID_MASK] 0x00000000FFFF0000 /* return fault code */ return faultCode; }
public String toString() { StringBuffer sb = new StringBuffer(); /* standard event fields */ int sc = this.getStatusCode(); sb.append("Event values:\n"); sb.append(" DeviceID : " + this.getAccountID() + "/" + this.getDeviceID() + "\n"); sb.append(" UniqueID : " + this.getUniqueID() + "\n"); sb.append( " Fixtime : " + this.getTimestamp() + " [" + new DateTime(this.getTimestamp()) + "]\n"); sb.append( " StatusCode: [" + StatusCodes.GetHex(sc) + "] " + StatusCodes.GetDescription(sc, null)); sb.append(" GPS : " + this.getGeoPoint() + " [age " + this.getGpsAge() + " sec]\n"); sb.append( " SpeedKPH : " + StringTools.format(this.getSpeedKPH(), "0.0") + " [" + this.getHeading() + "]\n"); /* remaining event fields (not already displayed) */ OrderedSet<?> fldn = new OrderedSet<Object>(this.fieldValues.getPropertyKeys()); fldn.remove(EventData.FLD_timestamp); fldn.remove(EventData.FLD_statusCode); fldn.remove(EventData.FLD_latitude); fldn.remove(EventData.FLD_longitude); fldn.remove(EventData.FLD_gpsAge); fldn.remove(EventData.FLD_speedKPH); fldn.remove(EventData.FLD_heading); for (Object k : fldn) { Object v = this.fieldValues.getProperty(k, "?"); sb.append(" "); sb.append(StringTools.leftAlign(k.toString(), 10)).append(": "); sb.append(v.toString()).append("\n"); } /* alternate fields */ if (this.otherValues != null) { for (String k : this.otherValues.keySet()) { String v = StringTools.trim(this.otherValues.get(k)); sb.append(" "); sb.append(StringTools.leftAlign(k, 10)).append(": "); sb.append(v).append("\n"); } } /* return string */ return sb.toString(); }
public void setIconName(String v) { this.setFieldValue(FLD_iconName, StringTools.trim(v)); }
public String getIconName() { String v = (String) this.getFieldValue(FLD_iconName); return StringTools.trim(v); }
public void setIconSelector(String v) { this.setFieldValue(FLD_iconSelector, StringTools.trim(v)); }
public String getIconSelector() { String v = (String) this.getFieldValue(FLD_iconSelector); return StringTools.trim(v); }
/* set the String ID for this record */ private void setStringID(String v) { this.setFieldValue(FLD_stringID, StringTools.trim(v)); }
public String getStatusName() { String v = (String) this.getFieldValue(FLD_statusName); return StringTools.trim(v); }
/* set the plural title */ public void setPluralTitle(String v) { this.setFieldValue(FLD_pluralTitle, StringTools.trim(v)); }
/* return the plural title */ public String getPluralTitle() { String v = (String) this.getFieldValue(FLD_pluralTitle); return StringTools.trim(v); }
/* set the singular title */ public void setSingularTitle(String v) { this.setFieldValue(FLD_singularTitle, StringTools.trim(v)); }
/* return the singular title */ public String getSingularTitle() { String v = (String) this.getFieldValue(FLD_singularTitle); return StringTools.trim(v); }
public String getGroupID() { String v = (String) this.getFieldValue(FLD_groupID); return StringTools.trim(v); }
public void setStatusName(String v) { this.setFieldValue(FLD_statusName, StringTools.trim(v)); }
private void setGroupID(String v) { this.setFieldValue(FLD_groupID, StringTools.trim(v)); }
public String getAclID() { String v = (String) this.getFieldValue(FLD_aclID); return StringTools.trim(v); }