private void validateTag(int tagCount, String[] tag) throws ValidationException { if (tag.length < 2) throw new ValidationException( String.format("tag[%d] must be in the format 'name=value'.", tagCount)); Validator.validateNotNullOrEmpty(String.format("tag[%d].name", tagCount), tag[0]); Validator.validateCharacterSet(String.format("tag[%d].name", tagCount), tag[0]); Validator.validateNotNullOrEmpty(String.format("tag[%d].value", tagCount), tag[1]); Validator.validateCharacterSet(String.format("tag[%d].value", tagCount), tag[1]); }
protected void execute(String[] command, long timestamp) throws ValidationException, DatastoreException { Validator.validateNotNullOrEmpty("metricName", command[1]); String metricName = command[1]; DataPoint dp; try { if (command[3].contains(".")) dp = m_doubleFactory.createDataPoint(timestamp, Double.parseDouble(command[3])); else dp = m_longFactory.createDataPoint(timestamp, Util.parseLong(command[3])); } catch (NumberFormatException e) { throw new ValidationException(e.getMessage()); } ImmutableSortedMap.Builder<String, String> tags = Tags.create(); int tagCount = 0; for (int i = 4; i < command.length; i++) { String[] tag = command[i].split("="); validateTag(tagCount, tag); tags.put(tag[0], tag[1]); tagCount++; } if (tagCount == 0) tags.put("add", "tag"); m_counter.incrementAndGet(); m_datastore.putDataPoint(metricName, tags.build(), dp); }