/* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * Copyright (c) 2013, MPL CodeInside http://codeinside.ru */ package ru.codeinside.gses.activiti.history; import ru.codeinside.adm.database.AuditValue; import ru.codeinside.gses.cert.NameParts; import ru.codeinside.gses.cert.X509; import java.io.Serializable; final public class VariableSnapshot implements Serializable { private static final long serialVersionUID = 1L; final public String name; final public String login; final public Long historyId; final public boolean sign; final public boolean verified; final public String certOwnerName; final public String certOwnerOrgName; private VariableSnapshot(String name, String login, Long historyId, boolean sign, boolean verified, String certOwnerName, String certOwnerOrgName) { this.name = name; this.login = login; this.historyId = historyId; this.sign = sign; this.certOwnerName = certOwnerName; this.certOwnerOrgName = certOwnerOrgName; this.verified = sign && verified; } public static VariableSnapshot withName(String varName) { return new VariableSnapshot(varName, null, null, false, false, null, null); } public static VariableSnapshot withAudit(String varName, AuditValue value, boolean verified) { final boolean hasSignature = value.getSign() != null || value.getCert() != null; String certOwnerName = null; String certOwnerOrgName = null; if (hasSignature) { final NameParts nameParts = X509.getSubjectParts(value.getCert()); String surName = nameParts.getSurName(); String givenName = nameParts.getGivenName(); certOwnerName = surName == null || givenName == null ? nameParts.getCommonName() : surName+' '+givenName; certOwnerOrgName = nameParts.getOrganization(); } return new VariableSnapshot(varName, value.getLogin(), value.getHid(), hasSignature, verified, certOwnerName, certOwnerOrgName); } @Override public String toString() { return "{" + "name='" + name + '\'' + ", login='" + login + '\'' + ", historyId=" + historyId + ", sign=" + sign + '}'; } }