use of com.helger.photon.bootstrap4.alert.BootstrapBox in project peppol-practical by phax.
the class PagePublicToolsIdentifierInformation method fillContent.
@Override
protected void fillContent(@Nonnull final WebPageExecutionContext aWPEC) {
final HCNodeList aNodeList = aWPEC.getNodeList();
final Locale aDisplayLocale = aWPEC.getDisplayLocale();
final FormErrorList aFormErrors = new FormErrorList();
final boolean bShowInput = true;
boolean bShowHeader = true;
if (aWPEC.hasAction(CPageParam.ACTION_PERFORM)) {
// Validate fields
final String sIDType = aWPEC.params().getAsString(FIELD_ID_TYPE);
final EIDType eIDType = EIDType.getFromIDOrNull(sIDType);
String sIDValue = aWPEC.params().getAsStringTrimmed(FIELD_ID_VALUE);
final boolean bDecodeValue = aWPEC.params().isCheckBoxChecked(FIELD_ID_DECODE, DEFAULT_DECODE);
if (bDecodeValue) {
// Try decoding - else stick with the original
sIDValue = URLHelper.urlDecodeOrDefault(sIDValue, sIDValue);
}
if (StringHelper.hasNoText(sIDType))
aFormErrors.addFieldError(FIELD_ID_TYPE, "An identifier type must be selected");
else if (eIDType == null)
aFormErrors.addFieldError(FIELD_ID_TYPE, "An identifier type must be selected");
if (StringHelper.hasNoText(sIDValue))
aFormErrors.addFieldError(FIELD_ID_VALUE, "An identifier value must be provided");
if (aFormErrors.isEmpty()) {
STATS_COUNT.increment();
STATS_ID_TYPE.increment(eIDType.getID());
bShowHeader = false;
LOGGER.info("Checking identifier type " + eIDType.name() + " for value '" + sIDValue + "'");
final ErrorList aIDErrors = new ErrorList();
final ICommonsList<KVPair> aDetails = new CommonsArrayList<>();
// Perform the main validation
eIDType.getValidator().validate(sIDValue, aIDErrors, aDetails);
final IHCNode aDetailsNode;
if (aDetails.isEmpty())
aDetailsNode = null;
else {
final HCUL aULDetails = new HCUL();
for (final KVPair aPair : aDetails) aULDetails.addAndReturnItem(aPair.getKey() + ": ").addChild(aPair.hasValue() ? code(aPair.getValue()) : badgeInfo("empty string"));
aDetailsNode = new HCNodeList().addChild(div("Determined details are:")).addChild(aULDetails);
}
if (aIDErrors.containsNoError()) {
STATS_COUNT_SUCCESS.increment();
final IHCNode aWarningsNode;
final EBootstrapAlertType eAlertType;
if (aIDErrors.isEmpty()) {
// No errors, no warnings
eAlertType = EBootstrapAlertType.SUCCESS;
aWarningsNode = null;
} else {
// No errors but warnings
eAlertType = EBootstrapAlertType.WARNING;
final HCUL aUL = new HCUL();
for (final IError aError : aIDErrors) aUL.addItem(aError.getAsString(aDisplayLocale));
aWarningsNode = new HCNodeList().addChild(div("But there are some warnings:")).addChild(aUL);
}
aNodeList.addChild(new BootstrapBox(eAlertType).addChild(div("The identifier ").addChild(code(sIDValue)).addChild(" is valid according to the rules of '" + eIDType.getDisplayName() + "'")).addChild(aWarningsNode).addChild(aDetailsNode));
LOGGER.info(aIDErrors.isEmpty() ? "success" : "success with warning");
} else {
// At least one error
final HCUL aUL = new HCUL();
for (final IError aError : aIDErrors) aUL.addItem(aError.getAsString(aDisplayLocale));
aNodeList.addChild(error(div("The identifier ").addChild(code(sIDValue)).addChild(" is NOT valid according to the rules of '" + eIDType.getDisplayName() + "'")).addChild(aUL).addChild(aDetailsNode));
LOGGER.info("failure");
}
}
}
if (bShowInput) {
if (bShowHeader) {
final ICommonsOrderedMap<String, String> aRuleSets = new CommonsLinkedHashMap<>();
aRuleSets.put("Peppol Policy for use of Identifiers v" + IDENTIFIER_POLICY_VERSION, "https://docs.peppol.eu/edelivery/");
aRuleSets.put("Peppol Participant Identifier Code List v" + EPredefinedParticipantIdentifierScheme.CODE_LIST_VERSION, "https://docs.peppol.eu/edelivery/codelists/");
aRuleSets.put("Peppol Document Type Identifier Code List v" + EPredefinedDocumentTypeIdentifier.CODE_LIST_VERSION, "https://docs.peppol.eu/edelivery/codelists/");
aRuleSets.put("Peppol Process Identifier Code List v" + EPredefinedProcessIdentifier.CODE_LIST_VERSION, "https://docs.peppol.eu/edelivery/codelists/");
final HCUL aULRules = new HCUL();
for (final Map.Entry<String, String> aEntry : aRuleSets.entrySet()) aULRules.addAndReturnItem(aEntry.getKey() + " - ").addChild(new HCA(new SimpleURL(aEntry.getValue())).setTargetBlank().addChild("see details"));
aNodeList.addChild(info(div("This page lets you verify identifiers against official rules. Current rule sets are:")).addChild(aULRules));
}
final HCExtSelect aTypeSelect = new HCExtSelect(new RequestField(FIELD_ID_TYPE));
for (final EIDType e : EIDType.values()) aTypeSelect.addOption(e.getID(), e.getDisplayName());
aTypeSelect.addOptionPleaseSelect(aDisplayLocale);
final BootstrapForm aForm = aNodeList.addAndReturnChild(getUIHandler().createFormSelf(aWPEC).setFormType(EBootstrapFormType.DEFAULT).setMethod(EHCFormMethod.GET).setLeft(2));
aForm.addFormGroup(new BootstrapFormGroup().setLabelMandatory("Identifier type").setCtrl(aTypeSelect).setErrorList(aFormErrors.getListOfField(FIELD_ID_TYPE)));
aForm.addFormGroup(new BootstrapFormGroup().setLabelMandatory("Identifier value").setCtrl(new HCEdit(new RequestField(FIELD_ID_VALUE)).setPlaceholder("scheme::value")).setHelpText(div("The identifier value to be checked for consistency. It MUST contain the scheme (like ").addChild(code(PeppolIdentifierHelper.PARTICIPANT_SCHEME_ISO6523_ACTORID_UPIS)).addChild(", ").addChild(code(PeppolIdentifierHelper.DOCUMENT_TYPE_SCHEME_BUSDOX_DOCID_QNS)).addChild(" or ").addChild(code(PeppolIdentifierHelper.PROCESS_SCHEME_CENBII_PROCID_UBL)).addChild(") AND the value as one long string")).setErrorList(aFormErrors.getListOfField(FIELD_ID_VALUE)));
aForm.addFormGroup(new BootstrapFormGroup().setLabel("Try to URL decode the identifier value?").setCtrl(new HCCheckBox(new RequestFieldBoolean(FIELD_ID_DECODE, DEFAULT_DECODE))).setErrorList(aFormErrors.getListOfField(FIELD_ID_DECODE)));
final BootstrapButtonToolbar aToolbar = aForm.addAndReturnChild(new BootstrapButtonToolbar(aWPEC));
aToolbar.addHiddenField(CPageParam.PARAM_ACTION, CPageParam.ACTION_PERFORM);
aToolbar.addSubmitButton("Check identifier");
}
}
use of com.helger.photon.bootstrap4.alert.BootstrapBox in project phoss-smp by phax.
the class AbstractSMPWebPageForm method onInputFormError.
@Override
protected void onInputFormError(@Nonnull final WebPageExecutionContext aWPEC, @Nonnull final FormErrorList aFormErrors) {
final HCNodeList aNodeList = aWPEC.getNodeList();
final Locale aDisplayLocale = aWPEC.getDisplayLocale();
// Show all global errors that don't have a specific error field
for (final IError aError : aFormErrors) if (StringHelper.hasNoText(aError.getErrorFieldName())) {
final EBootstrapAlertType eType = aError.isError() ? EBootstrapAlertType.DANGER : EBootstrapAlertType.WARNING;
aNodeList.addChild(new BootstrapBox(eType).addChild(aError.getAsString(aDisplayLocale)));
}
}
Aggregations