public void validate(ProcessResult response) { if (StringUtils.isBlank(xid)) response.addContextualMessage("xid", "validate.required"); else if (StringValidation.isLengthGreaterThan(xid, 50)) response.addMessage("xid", new TranslatableMessage("validate.notLongerThan", 50)); else if (!new DataPointDao().isXidUnique(xid, id)) response.addContextualMessage("xid", "validate.xidUsed"); if (StringUtils.isBlank(name)) response.addContextualMessage("name", "validate.required"); if (!LOGGING_TYPE_CODES.isValidId(loggingType)) response.addContextualMessage("loggingType", "validate.invalidValue"); if (loggingType == DataPointVO.LoggingTypes.ON_CHANGE && pointLocator.getDataTypeId() == DataTypes.NUMERIC) { if (tolerance < 0) response.addContextualMessage("tolerance", "validate.cannotBeNegative"); } if (!Common.TIME_PERIOD_CODES.isValidId(intervalLoggingPeriodType)) response.addContextualMessage("intervalLoggingPeriodType", "validate.invalidValue"); if (intervalLoggingPeriod <= 0) response.addContextualMessage("intervalLoggingPeriod", "validate.greaterThanZero"); if (!INTERVAL_LOGGING_TYPE_CODES.isValidId(intervalLoggingType)) response.addContextualMessage("intervalLoggingType", "validate.invalidValue"); if (purgeOverride) { if (!Common.TIME_PERIOD_CODES.isValidId(purgeType)) response.addContextualMessage("purgeType", "validate.invalidValue"); if (purgePeriod <= 0) response.addContextualMessage("purgePeriod", "validate.greaterThanZero"); } if (textRenderer == null) response.addContextualMessage("textRenderer", "validate.required"); if (defaultCacheSize < 0) response.addContextualMessage("defaultCacheSize", "validate.cannotBeNegative"); if (discardExtremeValues && discardHighLimit <= discardLowLimit) response.addContextualMessage("discardHighLimit", "validate.greaterThanDiscardLow"); if (!StringUtils.isBlank(chartColour)) { try { ColorUtils.toColor(chartColour); } catch (InvalidArgumentException e) { response.addContextualMessage("chartColour", "validate.invalidValue"); } } pointLocator.validate(response, this); // Check text renderer type if (textRenderer != null && !textRenderer.getDef().supports(pointLocator.getDataTypeId())) response.addGenericMessage("validate.text.incompatible"); // Check chart renderer type if (chartRenderer != null && !chartRenderer.getDef().supports(pointLocator.getDataTypeId())) response.addGenericMessage("validate.chart.incompatible"); // Check the plot type if (!PLOT_TYPE_CODES.isValidId(plotType)) response.addContextualMessage("plotType", "validate.invalidValue"); if (plotType != PlotTypes.STEP && pointLocator.getDataTypeId() != DataTypes.NUMERIC) response.addContextualMessage("plotType", "validate.invalidValue"); }