/*
* Copyright 2012 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package org.drools.workbench.screens.guided.dtable.client.widget.auditlog;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Date;
import java.util.List;
import java.util.Map;
import com.google.gwt.core.client.GWT;
import com.google.gwt.i18n.client.DateTimeFormat;
import com.google.gwt.safehtml.client.SafeHtmlTemplates;
import com.google.gwt.safehtml.shared.SafeHtml;
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
import com.google.gwt.safehtml.shared.SafeHtmlUtils;
import org.drools.workbench.models.datamodel.auditlog.AuditLogEntry;
import org.drools.workbench.models.datamodel.rule.BaseSingleFieldConstraint;
import org.drools.workbench.models.datamodel.workitems.PortableParameterDefinition;
import org.drools.workbench.models.guided.dtable.shared.auditlog.ActionInsertFactColumnDetails;
import org.drools.workbench.models.guided.dtable.shared.auditlog.ActionSetFieldColumnDetails;
import org.drools.workbench.models.guided.dtable.shared.auditlog.ActionWorkItemColumnDetails;
import org.drools.workbench.models.guided.dtable.shared.auditlog.ActionWorkItemInsertFactColumnDetails;
import org.drools.workbench.models.guided.dtable.shared.auditlog.ActionWorkItemSetFieldColumnDetails;
import org.drools.workbench.models.guided.dtable.shared.auditlog.AttributeColumnDetails;
import org.drools.workbench.models.guided.dtable.shared.auditlog.ColumnDetails;
import org.drools.workbench.models.guided.dtable.shared.auditlog.ConditionColumnDetails;
import org.drools.workbench.models.guided.dtable.shared.auditlog.DecisionTableAuditEvents;
import org.drools.workbench.models.guided.dtable.shared.auditlog.DeleteColumnAuditLogEntry;
import org.drools.workbench.models.guided.dtable.shared.auditlog.DeleteRowAuditLogEntry;
import org.drools.workbench.models.guided.dtable.shared.auditlog.InsertColumnAuditLogEntry;
import org.drools.workbench.models.guided.dtable.shared.auditlog.InsertRowAuditLogEntry;
import org.drools.workbench.models.guided.dtable.shared.auditlog.LimitedEntryActionInsertFactColumnDetails;
import org.drools.workbench.models.guided.dtable.shared.auditlog.LimitedEntryActionSetFieldColumnDetails;
import org.drools.workbench.models.guided.dtable.shared.auditlog.LimitedEntryConditionColumnDetails;
import org.drools.workbench.models.guided.dtable.shared.auditlog.MetadataColumnDetails;
import org.drools.workbench.models.guided.dtable.shared.auditlog.UpdateColumnAuditLogEntry;
import org.drools.workbench.models.guided.dtable.shared.model.ActionInsertFactCol52;
import org.drools.workbench.models.guided.dtable.shared.model.ActionSetFieldCol52;
import org.drools.workbench.models.guided.dtable.shared.model.ActionWorkItemCol52;
import org.drools.workbench.models.guided.dtable.shared.model.ActionWorkItemInsertFactCol52;
import org.drools.workbench.models.guided.dtable.shared.model.ActionWorkItemSetFieldCol52;
import org.drools.workbench.models.guided.dtable.shared.model.AttributeCol52;
import org.drools.workbench.models.guided.dtable.shared.model.BaseColumnFieldDiff;
import org.drools.workbench.models.guided.dtable.shared.model.ConditionCol52;
import org.drools.workbench.models.guided.dtable.shared.model.DTCellValue52;
import org.drools.workbench.models.guided.dtable.shared.model.DTColumnConfig52;
import org.drools.workbench.models.guided.dtable.shared.model.LimitedEntryActionInsertFactCol52;
import org.drools.workbench.models.guided.dtable.shared.model.LimitedEntryActionSetFieldCol52;
import org.drools.workbench.models.guided.dtable.shared.model.LimitedEntryConditionCol52;
import org.drools.workbench.models.guided.dtable.shared.model.MetadataCol52;
import org.drools.workbench.models.guided.dtable.shared.model.Pattern52;
import org.drools.workbench.models.guided.dtable.shared.model.WorkItemColumnParameterValueDiffImpl;
import org.drools.workbench.screens.guided.dtable.client.resources.i18n.GuidedDecisionTableConstants;
/**
* Render different HTML for different AuditLogEvents
*/
@SuppressWarnings("unused")
public class AuditLogEntryCellHelper {
private static final String QUOTE = "'";
interface Template
extends
SafeHtmlTemplates {
@Template("<div>{0}</div>")
SafeHtml commentHeader( String header );
@Template("<tr><td><div class=\"{2}\">{0}</div></td><td><div class=\"{3}\">{1}</div></td></tr>")
SafeHtml commentRow( String rowLabel,
String rowValue,
String labelClass,
String valueClass );
@Template("<div>{0}</div>" +
"<table>" +
"<tr><td><div class=\"{5}\">{1}</div></td><td><div class=\"{6}\">{2}</div></td></tr>" +
"<tr><td><div class=\"{5}\">{3}</div></td><td><div class=\"{6}\">{4}</div></td></tr>" +
"</table>")
SafeHtml commentHeader2Details( String header,
String row1Label,
String row1Value,
String row2Label,
String row2Value,
String labelClass,
String valueClass );
@Template("<div>{0}</div>" +
"<table>" +
"<tr><td><div class=\"{7}\">{1}</div></td><td><div class=\"{8}\">{2}</div></td></tr>" +
"<tr><td><div class=\"{7}\">{3}</div></td><td><div class=\"{8}\">{4}</div></td></tr>" +
"<tr><td><div class=\"{7}\">{5}</div></td><td><div class=\"{8}\">{6}</div></td></tr>" +
"</table>")
SafeHtml commentHeader3Details( String header,
String row1Label,
String row1Value,
String row2Label,
String row2Value,
String row3Label,
String row3Value,
String labelClass,
String valueClass );
@Template("<div>{0}</div>" +
"<table>" +
"<tr><td><div class=\"{9}\">{1}</div></td><td><div class=\"{10}\">{2}</div></td></tr>" +
"<tr><td><div class=\"{9}\">{3}</div></td><td><div class=\"{10}\">{4}</div></td></tr>" +
"<tr><td><div class=\"{9}\">{5}</div></td><td><div class=\"{10}\">{6}</div></td></tr>" +
"<tr><td><div class=\"{9}\">{7}</div></td><td><div class=\"{10}\">{8}</div></td></tr>" +
"</table>")
SafeHtml commentHeader4Details( String header,
String row1Label,
String row1Value,
String row2Label,
String row2Value,
String row3Label,
String row3Value,
String row4Label,
String row4Value,
String labelClass,
String valueClass );
@Template("<div class=\"{1}\"><ul>{0}</ul></div>")
SafeHtml updatedFields( SafeHtml content,
String className );
@Template("<li>{0}: {1} » {2} </li>")
SafeHtml updatedField( String fieldName,
String oldValue,
String newValue );
}
private static final Template TEMPLATE = GWT.create( Template.class );
private final DateTimeFormat format;
// The CSS classes for generated html templates.
private String labelClass = null;
private String valueClass = null;
public AuditLogEntryCellHelper( final DateTimeFormat format ) {
this.format = format;
}
public AuditLogEntryCellHelper( final DateTimeFormat format,
final String labelClass,
final String valueClass ) {
this.format = format;
this.labelClass = labelClass;
this.valueClass = valueClass;
}
/**
* Lookup display text for each AuditLogEntry type
* @param eventType
* @return
*/
public static String getEventTypeDisplayText( final String eventType ) {
if ( eventType.equals( DecisionTableAuditEvents.INSERT_COLUMN.name() ) ) {
return GuidedDecisionTableConstants.INSTANCE.DecisionTableAuditLogEventInsertColumn();
} else if ( eventType.equals( DecisionTableAuditEvents.INSERT_ROW.name() ) ) {
return GuidedDecisionTableConstants.INSTANCE.DecisionTableAuditLogEventInsertRow();
} else if ( eventType.equals( DecisionTableAuditEvents.UPDATE_COLUMN.name() ) ) {
return GuidedDecisionTableConstants.INSTANCE.DecisionTableAuditLogEventUpdateColumn();
} else if ( eventType.equals( DecisionTableAuditEvents.DELETE_COLUMN.name() ) ) {
return GuidedDecisionTableConstants.INSTANCE.DecisionTableAuditLogEventDeleteColumn();
} else if ( eventType.equals( DecisionTableAuditEvents.DELETE_ROW.name() ) ) {
return GuidedDecisionTableConstants.INSTANCE.DecisionTableAuditLogEventDeleteRow();
}
throw new IllegalArgumentException( "Unrecognised AuditLogEntry type." );
}
public SafeHtml getSafeHtml( final AuditLogEntry event ) {
if ( event instanceof UpdateColumnAuditLogEntry ) {
return getSafeHtml( (UpdateColumnAuditLogEntry) event );
} else if ( event instanceof InsertColumnAuditLogEntry ) {
return getSafeHtml( (InsertColumnAuditLogEntry) event );
} else if ( event instanceof DeleteColumnAuditLogEntry ) {
return getSafeHtml( (DeleteColumnAuditLogEntry) event );
} else if ( event instanceof InsertRowAuditLogEntry ) {
return getSafeHtml( (InsertRowAuditLogEntry) event );
} else if ( event instanceof DeleteRowAuditLogEntry ) {
return getSafeHtml( (DeleteRowAuditLogEntry) event );
}
throw new IllegalArgumentException( "Unrecognised AuditLogEntry type." );
}
private SafeHtml getSafeHtml( final InsertRowAuditLogEntry event ) {
SafeHtmlBuilder sb = new SafeHtmlBuilder();
sb.append( TEMPLATE.commentHeader( GuidedDecisionTableConstants.INSTANCE.DecisionTableAuditLogInsertRowAt0( event.getRowIndex() + 1 ) ) );
return sb.toSafeHtml();
}
private SafeHtml getSafeHtml( final DeleteRowAuditLogEntry event ) {
SafeHtmlBuilder sb = new SafeHtmlBuilder();
sb.append( TEMPLATE.commentHeader( GuidedDecisionTableConstants.INSTANCE.DecisionTableAuditLogDeleteRowAt0( event.getRowIndex() + 1 ) ) );
return sb.toSafeHtml();
}
private SafeHtml getSafeHtml( final InsertColumnAuditLogEntry event ) {
SafeHtmlBuilder sb = new SafeHtmlBuilder();
buildColumnDetailsInsert( event.getDetails(),
sb );
return sb.toSafeHtml();
}
private SafeHtml getSafeHtml( final UpdateColumnAuditLogEntry event ) {
SafeHtmlBuilder sb = new SafeHtmlBuilder();
buildColumnDetailsUpdate( event.getDetails(),
event.getOriginalDetails(),
event.getDiffs(),
sb );
return sb.toSafeHtml();
}
private SafeHtml getSafeHtml( final DeleteColumnAuditLogEntry event ) {
SafeHtmlBuilder sb = new SafeHtmlBuilder();
sb.append( TEMPLATE.commentHeader( GuidedDecisionTableConstants.INSTANCE.DecisionTableAuditLogDeleteColumn0( event.getColumnHeader() ) ) );
return sb.toSafeHtml();
}
private void buildColumnDetailsInsert( final ColumnDetails details,
final SafeHtmlBuilder sb ) {
if ( details instanceof AttributeColumnDetails ) {
buildColumnDetailsInsert( (AttributeColumnDetails) details,
sb );
} else if ( details instanceof MetadataColumnDetails ) {
buildColumnDetailsInsert( (MetadataColumnDetails) details,
sb );
} else if ( details instanceof ConditionColumnDetails ) {
buildColumnDetailsInsert( (ConditionColumnDetails) details,
sb );
} else if ( details instanceof LimitedEntryConditionColumnDetails ) {
buildColumnDetailsInsert( (LimitedEntryConditionColumnDetails) details,
sb );
} else if ( details instanceof ActionInsertFactColumnDetails ) {
buildColumnDetailsInsert( (ActionInsertFactColumnDetails) details,
sb );
} else if ( details instanceof LimitedEntryActionInsertFactColumnDetails ) {
buildColumnDetailsInsert( (LimitedEntryActionInsertFactColumnDetails) details,
sb );
} else if ( details instanceof ActionSetFieldColumnDetails ) {
buildColumnDetailsInsert( (ActionSetFieldColumnDetails) details,
sb );
} else if ( details instanceof LimitedEntryActionSetFieldColumnDetails ) {
buildColumnDetailsInsert( (LimitedEntryActionSetFieldColumnDetails) details,
sb );
} else if ( details instanceof ActionWorkItemColumnDetails ) {
buildColumnDetailsInsert( (ActionWorkItemColumnDetails) details,
sb );
} else if ( details instanceof ActionWorkItemInsertFactColumnDetails ) {
buildColumnDetailsInsert( (ActionWorkItemInsertFactColumnDetails) details,
sb );
} else if ( details instanceof ActionWorkItemSetFieldColumnDetails ) {
buildColumnDetailsInsert( (ActionWorkItemSetFieldColumnDetails) details,
sb );
} else {
sb.append( TEMPLATE.commentHeader( GuidedDecisionTableConstants.INSTANCE.DecisionTableAuditLogInsertColumn0( details.getColumnHeader() ) ) );
}
}
private void buildColumnDetailsInsert( final AttributeColumnDetails details,
final SafeHtmlBuilder sb ) {
sb.append( TEMPLATE.commentHeader( GuidedDecisionTableConstants.INSTANCE.DecisionTableAuditLogInsertAttribute0( details.getAttribute() ) ) );
}
private void buildColumnDetailsInsert( final MetadataColumnDetails details,
final SafeHtmlBuilder sb ) {
sb.append( TEMPLATE.commentHeader( GuidedDecisionTableConstants.INSTANCE.DecisionTableAuditLogInsertMetadata0( details.getMetadata() ) ) );
}
private void buildColumnDetailsInsert( final ConditionColumnDetails details,
final SafeHtmlBuilder sb ) {
sb.append( TEMPLATE.commentHeader2Details( GuidedDecisionTableConstants.INSTANCE.DecisionTableAuditLogInsertCondition0( details.getColumnHeader() ),
new StringBuilder( GuidedDecisionTableConstants.INSTANCE.Field() ).append( GuidedDecisionTableConstants.COLON ).toString(),
nil( details.getFactField() ),
new StringBuilder( GuidedDecisionTableConstants.INSTANCE.Operator() ).append( GuidedDecisionTableConstants.COLON ).toString(),
nil( details.getOperator() ),
labelClass,
valueClass ) );
}
private void buildColumnDetailsInsert( final LimitedEntryConditionColumnDetails details,
final SafeHtmlBuilder sb ) {
sb.append( TEMPLATE.commentHeader3Details( GuidedDecisionTableConstants.INSTANCE.DecisionTableAuditLogInsertCondition0( details.getColumnHeader() ),
new StringBuilder( GuidedDecisionTableConstants.INSTANCE.Field() ).append( GuidedDecisionTableConstants.COLON ).toString(),
nil( details.getFactField() ),
new StringBuilder( GuidedDecisionTableConstants.INSTANCE.Operator() ).append( GuidedDecisionTableConstants.COLON ).toString(),
nil( details.getOperator() ),
new StringBuilder( GuidedDecisionTableConstants.INSTANCE.Value() ).append( GuidedDecisionTableConstants.COLON ).toString(),
nilLimitedEntryValue( details.getValue() ),
labelClass,
valueClass ) );
}
private void buildColumnDetailsInsert( final ActionInsertFactColumnDetails details,
final SafeHtmlBuilder sb ) {
sb.append( TEMPLATE.commentHeader2Details( GuidedDecisionTableConstants.INSTANCE.DecisionTableAuditLogInsertActionInsertFact0( details.getColumnHeader() ),
new StringBuilder( GuidedDecisionTableConstants.INSTANCE.FactType() ).append( GuidedDecisionTableConstants.COLON ).toString(),
nil( details.getFactType() ),
new StringBuilder( GuidedDecisionTableConstants.INSTANCE.Field() ).append( GuidedDecisionTableConstants.COLON ).toString(),
nil( details.getFactField() ),
labelClass,
valueClass ) );
}
private void buildColumnDetailsInsert( final LimitedEntryActionInsertFactColumnDetails details,
final SafeHtmlBuilder sb ) {
sb.append( TEMPLATE.commentHeader3Details( GuidedDecisionTableConstants.INSTANCE.DecisionTableAuditLogInsertActionInsertFact0( details.getColumnHeader() ),
new StringBuilder( GuidedDecisionTableConstants.INSTANCE.FactType() ).append( GuidedDecisionTableConstants.COLON ).toString(),
nil( details.getFactType() ),
new StringBuilder( GuidedDecisionTableConstants.INSTANCE.Field() ).append( GuidedDecisionTableConstants.COLON ).toString(),
nil( details.getFactField() ),
new StringBuilder( GuidedDecisionTableConstants.INSTANCE.Value() ).append( GuidedDecisionTableConstants.COLON ).toString(),
nilLimitedEntryValue( details.getValue() ),
labelClass,
valueClass ) );
}
private void buildColumnDetailsInsert( final ActionSetFieldColumnDetails details,
final SafeHtmlBuilder sb ) {
sb.append( TEMPLATE.commentHeader2Details( GuidedDecisionTableConstants.INSTANCE.DecisionTableAuditLogInsertActionSetField0( details.getColumnHeader() ),
new StringBuilder( GuidedDecisionTableConstants.INSTANCE.BoundVariable() ).append( GuidedDecisionTableConstants.COLON ).toString(),
nil( details.getBoundName() ),
new StringBuilder( GuidedDecisionTableConstants.INSTANCE.Field() ).append( GuidedDecisionTableConstants.COLON ).toString(),
nil( details.getFactField() ),
labelClass,
valueClass ) );
}
private void buildColumnDetailsInsert( final LimitedEntryActionSetFieldColumnDetails details,
final SafeHtmlBuilder sb ) {
sb.append( TEMPLATE.commentHeader3Details( GuidedDecisionTableConstants.INSTANCE.DecisionTableAuditLogInsertActionSetField0( details.getColumnHeader() ),
new StringBuilder( GuidedDecisionTableConstants.INSTANCE.BoundVariable() ).append( GuidedDecisionTableConstants.COLON ).toString(),
nil( details.getBoundName() ),
new StringBuilder( GuidedDecisionTableConstants.INSTANCE.Field() ).append( GuidedDecisionTableConstants.COLON ).toString(),
nil( details.getFactField() ),
new StringBuilder( GuidedDecisionTableConstants.INSTANCE.Value() ).append( GuidedDecisionTableConstants.COLON ).toString(),
nilLimitedEntryValue( details.getValue() ),
labelClass,
valueClass ) );
}
private void buildColumnDetailsInsert( final ActionWorkItemColumnDetails details,
final SafeHtmlBuilder sb ) {
sb.append( TEMPLATE.commentHeader( GuidedDecisionTableConstants.INSTANCE.DecisionTableAuditLogInsertWorkItemExecuteColumn0( details.getColumnHeader() ) ) );
if ( details.getParameters().size() > 0 ) {
sb.append( SafeHtmlUtils.fromTrustedString( "<table>" ) );
sb.append( TEMPLATE.commentRow( nil( GuidedDecisionTableConstants.INSTANCE.WorkItemNameColon() ),
nil( details.getName() ),
labelClass,
valueClass ) );
for ( Map.Entry<String, PortableParameterDefinition> e : details.getParameters().entrySet() ) {
sb.append( TEMPLATE.commentRow( new StringBuilder( nil( e.getKey() ) ).append( GuidedDecisionTableConstants.COLON ).toString(),
nil( e.getValue() ),
labelClass,
valueClass ) );
}
sb.append( SafeHtmlUtils.fromTrustedString( "</table>" ) );
}
}
private void buildColumnDetailsInsert( final ActionWorkItemInsertFactColumnDetails details,
final SafeHtmlBuilder sb ) {
sb.append( TEMPLATE.commentHeader4Details( GuidedDecisionTableConstants.INSTANCE.DecisionTableAuditLogInsertWorkItemInsertFactColumn0( details.getColumnHeader() ),
new StringBuilder( GuidedDecisionTableConstants.INSTANCE.FactType() ).append( GuidedDecisionTableConstants.COLON ).toString(),
nil( details.getFactType() ),
new StringBuilder( GuidedDecisionTableConstants.INSTANCE.Field() ).append( GuidedDecisionTableConstants.COLON ).toString(),
nil( details.getFactField() ),
new StringBuilder( GuidedDecisionTableConstants.INSTANCE.WorkItemNameColon() ).toString(),
nil( details.getWorkItemName() ),
new StringBuilder( GuidedDecisionTableConstants.INSTANCE.WorkItemParameterNameColon() ).toString(),
nil( details.getWorkItemResultParameterName() ),
labelClass,
valueClass ) );
}
private void buildColumnDetailsInsert( final ActionWorkItemSetFieldColumnDetails details,
final SafeHtmlBuilder sb ) {
sb.append( TEMPLATE.commentHeader4Details( GuidedDecisionTableConstants.INSTANCE.DecisionTableAuditLogInsertWorkItemSetFieldColumn0( details.getColumnHeader() ),
new StringBuilder( GuidedDecisionTableConstants.INSTANCE.BoundVariable() ).append( GuidedDecisionTableConstants.COLON ).toString(),
nil( details.getBoundName() ),
new StringBuilder( GuidedDecisionTableConstants.INSTANCE.Field() ).append( GuidedDecisionTableConstants.COLON ).toString(),
nil( details.getFactField() ),
new StringBuilder( GuidedDecisionTableConstants.INSTANCE.WorkItemNameColon() ).toString(),
nil( details.getWorkItemName() ),
new StringBuilder( GuidedDecisionTableConstants.INSTANCE.WorkItemParameterNameColon() ).toString(),
nil( details.getWorkItemResultParameterName() ),
labelClass,
valueClass ) );
}
private void buildColumnDetailsUpdate( final ColumnDetails details,
final ColumnDetails originalDetails,
final List<BaseColumnFieldDiff> diffs,
final SafeHtmlBuilder sb ) {
if ( ( details instanceof ConditionColumnDetails ) && ( originalDetails instanceof ConditionColumnDetails ) ) {
buildColumnDetailsUpdate( (ConditionColumnDetails) details,
(ConditionColumnDetails) originalDetails,
diffs,
sb );
} else if ( ( details instanceof LimitedEntryConditionColumnDetails ) && ( originalDetails instanceof LimitedEntryConditionColumnDetails ) ) {
buildColumnDetailsUpdate( (LimitedEntryConditionColumnDetails) details,
(LimitedEntryConditionColumnDetails) originalDetails,
diffs,
sb );
} else if ( ( details instanceof ActionInsertFactColumnDetails ) && ( originalDetails instanceof ActionInsertFactColumnDetails ) ) {
buildColumnDetailsUpdate( (ActionInsertFactColumnDetails) details,
(ActionInsertFactColumnDetails) originalDetails,
diffs,
sb );
} else if ( ( details instanceof LimitedEntryActionInsertFactColumnDetails ) && ( originalDetails instanceof LimitedEntryActionInsertFactColumnDetails ) ) {
buildColumnDetailsUpdate( (LimitedEntryActionInsertFactColumnDetails) details,
(LimitedEntryActionInsertFactColumnDetails) originalDetails,
diffs,
sb );
} else if ( ( details instanceof ActionSetFieldColumnDetails ) && ( originalDetails instanceof ActionSetFieldColumnDetails ) ) {
buildColumnDetailsUpdate( (ActionSetFieldColumnDetails) details,
(ActionSetFieldColumnDetails) originalDetails,
diffs,
sb );
} else if ( ( details instanceof LimitedEntryActionSetFieldColumnDetails ) && ( originalDetails instanceof LimitedEntryActionSetFieldColumnDetails ) ) {
buildColumnDetailsUpdate( (LimitedEntryActionSetFieldColumnDetails) details,
(LimitedEntryActionSetFieldColumnDetails) originalDetails,
diffs,
sb );
} else if ( ( details instanceof AttributeColumnDetails ) && ( originalDetails instanceof AttributeColumnDetails ) ) {
buildColumnDetailsUpdate( (AttributeColumnDetails) details,
(AttributeColumnDetails) originalDetails,
diffs,
sb );
} else if ( ( details instanceof MetadataColumnDetails ) && ( originalDetails instanceof MetadataColumnDetails ) ) {
buildColumnDetailsUpdate( (MetadataColumnDetails) details,
(MetadataColumnDetails) originalDetails,
diffs,
sb );
} else if ( ( details instanceof ActionWorkItemColumnDetails ) && ( originalDetails instanceof ActionWorkItemColumnDetails ) ) {
buildColumnDetailsUpdate( (ActionWorkItemColumnDetails) details,
(ActionWorkItemColumnDetails) originalDetails,
diffs,
sb );
} else if ( ( details instanceof ActionWorkItemInsertFactColumnDetails ) && ( originalDetails instanceof ActionWorkItemInsertFactColumnDetails ) ) {
buildColumnDetailsUpdate( (ActionWorkItemInsertFactColumnDetails) details,
(ActionWorkItemInsertFactColumnDetails) originalDetails,
diffs,
sb );
} else if ( ( details instanceof ActionWorkItemSetFieldColumnDetails ) && ( originalDetails instanceof ActionWorkItemSetFieldColumnDetails ) ) {
buildColumnDetailsUpdate( (ActionWorkItemSetFieldColumnDetails) details,
(ActionWorkItemSetFieldColumnDetails) originalDetails,
diffs,
sb );
} else {
sb.append( TEMPLATE.commentHeader( GuidedDecisionTableConstants.INSTANCE.DecisionTableAuditLogUpdateColumn( details.getColumnHeader() ) ) );
SafeHtmlBuilder sbFields = null;
// Show changed fields too.
if ( diffs != null && !diffs.isEmpty() ) {
sbFields = new SafeHtmlBuilder();
for ( BaseColumnFieldDiff diff : diffs ) {
String changedFieldName = diff.getFieldName();
if ( changedFieldName.equals( DTColumnConfig52.FIELD_HEADER ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.ColumnHeader(),
diff.getOldValue(),
diff.getValue(),
sbFields );
} else if ( changedFieldName.equals( DTColumnConfig52.FIELD_HIDE_COLUMN ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.HideThisColumn(),
diff.getOldValue(),
diff.getValue(),
sbFields );
} else if ( changedFieldName.equals( DTColumnConfig52.FIELD_DEFAULT_VALUE ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.DefaultValue(),
diff.getOldValue(),
diff.getValue(),
sbFields );
}
}
}
if ( sbFields != null ) {
sb.append( TEMPLATE.updatedFields( sbFields.toSafeHtml(),
labelClass ) );
}
}
}
/**
* BZ-996932: Added column update details for attribute columns.
* @param details The new details column.
* @param originalDetails The origin details column.
* @param diffs A part from the column details, the column fields update information must be present too.
* @param sb The html bulder buffer.
*/
private void buildColumnDetailsUpdate( final AttributeColumnDetails details,
final AttributeColumnDetails originalDetails,
final List<BaseColumnFieldDiff> diffs,
final SafeHtmlBuilder sb ) {
sb.append( TEMPLATE.commentHeader( GuidedDecisionTableConstants.INSTANCE.DecisionTableAuditLogUpdateAttribute( details.getAttribute() ) ) );
SafeHtmlBuilder sbFields = null;
// Show changed fields too.
if ( diffs != null && !diffs.isEmpty() ) {
sbFields = new SafeHtmlBuilder();
for ( BaseColumnFieldDiff diff : diffs ) {
String changedFieldName = diff.getFieldName();
if ( changedFieldName.equals( DTColumnConfig52.FIELD_HIDE_COLUMN ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.HideThisColumn(),
diff.getOldValue(),
diff.getValue(),
sbFields );
} else if ( changedFieldName.equals( DTColumnConfig52.FIELD_DEFAULT_VALUE ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.DefaultValue(),
diff.getOldValue(),
diff.getValue(),
sbFields );
} else if ( changedFieldName.equals( AttributeCol52.FIELD_REVERSE_ORDER ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.ReverseOrder(),
diff.getOldValue(),
diff.getValue(),
sbFields );
} else if ( changedFieldName.equals( AttributeCol52.FIELD_USE_ROW_NUMBER ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.UseRowNumber(),
diff.getOldValue(),
diff.getValue(),
sbFields );
}
}
}
if ( sbFields != null ) {
sb.append( TEMPLATE.updatedFields( sbFields.toSafeHtml(), labelClass ) );
}
}
private void buildColumnDetailsUpdate( final ConditionColumnDetails details,
final ConditionColumnDetails originalDetails,
final List<BaseColumnFieldDiff> diffs,
final SafeHtmlBuilder sb ) {
sb.append( TEMPLATE.commentHeader( GuidedDecisionTableConstants.INSTANCE.DecisionTableAuditLogUpdateCondition( details.getColumnHeader() ) ) );
SafeHtmlBuilder sbFields = null;
// Show changed fields too.
if ( diffs != null && !diffs.isEmpty() ) {
sbFields = new SafeHtmlBuilder();
for ( BaseColumnFieldDiff diff : diffs ) {
String changedFieldName = diff.getFieldName();
if ( changedFieldName.equals( DTColumnConfig52.FIELD_HEADER ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.ColumnHeader(),
diff.getOldValue(),
diff.getValue(),
sbFields );
} else if ( changedFieldName.equals( ConditionCol52.FIELD_FACT_FIELD ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.Field(),
diff.getOldValue(),
diff.getValue(),
sbFields );
} else if ( changedFieldName.equals( ConditionCol52.FIELD_OPERATOR ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.Operator(),
diff.getOldValue(),
diff.getValue(),
sbFields );
} else if ( changedFieldName.equals( ConditionCol52.FIELD_VALUE_LIST ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.ValueList(),
diff.getOldValue(),
diff.getValue(),
sbFields );
} else if ( changedFieldName.equals( ConditionCol52.FIELD_BINDING ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.Binding(),
diff.getOldValue(),
diff.getValue(),
sbFields );
} else if ( changedFieldName.equals( ConditionCol52.FIELD_CONSTRAINT_VALUE_TYPE ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.CalculationType(),
getLiteralForCalculationType( (Integer) diff.getOldValue() ),
getLiteralForCalculationType( (Integer) diff.getValue() ),
sbFields );
} else if ( changedFieldName.equals( DTColumnConfig52.FIELD_DEFAULT_VALUE ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.DefaultValue(),
diff.getOldValue(),
diff.getValue(),
sbFields );
} else if ( changedFieldName.equals( DTColumnConfig52.FIELD_HIDE_COLUMN ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.HideThisColumn(),
diff.getOldValue(),
diff.getValue(),
sbFields );
} else if ( changedFieldName.equals( Pattern52.FIELD_ENTRY_POINT_NAME ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.DTLabelFromEntryPoint(),
diff.getOldValue(),
diff.getValue(),
sbFields );
} else if ( changedFieldName.equals( Pattern52.FIELD_FACT_TYPE ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.FactType(),
diff.getOldValue(),
diff.getValue(),
sbFields );
} else if ( changedFieldName.equals( Pattern52.FIELD_BOUND_NAME ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.Binding(),
diff.getOldValue(),
diff.getValue(),
sbFields );
} else if ( changedFieldName.equals( ConditionCol52.FIELD_FIELD_TYPE ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.FieldType(),
diff.getOldValue(),
diff.getValue(),
sbFields );
}
}
}
if ( sbFields != null ) {
sb.append( TEMPLATE.updatedFields( sbFields.toSafeHtml(),
labelClass ) );
}
}
private void buildColumnDetailsUpdate( final LimitedEntryConditionColumnDetails details,
final LimitedEntryConditionColumnDetails originalDetails,
final List<BaseColumnFieldDiff> diffs,
final SafeHtmlBuilder sb ) {
sb.append( TEMPLATE.commentHeader( GuidedDecisionTableConstants.INSTANCE.DecisionTableAuditLogUpdateCondition( details.getColumnHeader() ) ) );
SafeHtmlBuilder sbFields = null;
// Show changed fields too.
if ( diffs != null && !diffs.isEmpty() ) {
sbFields = new SafeHtmlBuilder();
for ( BaseColumnFieldDiff diff : diffs ) {
String changedFieldName = diff.getFieldName();
if ( changedFieldName.equals( DTColumnConfig52.FIELD_HEADER ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.ColumnHeader(),
diff.getOldValue(),
diff.getValue(),
sbFields );
} else if ( changedFieldName.equals( LimitedEntryConditionCol52.FIELD_VALUE ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.Value(),
diff.getOldValue(),
diff.getValue(),
sbFields );
} else if ( changedFieldName.equals( ConditionCol52.FIELD_FACT_FIELD ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.Field(),
diff.getOldValue(),
diff.getValue(),
sbFields );
} else if ( changedFieldName.equals( ConditionCol52.FIELD_OPERATOR ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.Operator(),
diff.getOldValue(),
diff.getValue(),
sbFields );
} else if ( changedFieldName.equals( ConditionCol52.FIELD_VALUE_LIST ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.ValueList(),
diff.getOldValue(),
diff.getValue(),
sbFields );
} else if ( changedFieldName.equals( ConditionCol52.FIELD_BINDING ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.Binding(),
diff.getOldValue(),
diff.getValue(),
sbFields );
} else if ( changedFieldName.equals( ConditionCol52.FIELD_CONSTRAINT_VALUE_TYPE ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.CalculationType(),
getLiteralForCalculationType( (Integer) diff.getOldValue() ),
getLiteralForCalculationType( (Integer) diff.getValue() ),
sbFields );
} else if ( changedFieldName.equals( DTColumnConfig52.FIELD_DEFAULT_VALUE ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.DefaultValue(),
diff.getOldValue(),
diff.getValue(),
sbFields );
} else if ( changedFieldName.equals( DTColumnConfig52.FIELD_HIDE_COLUMN ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.HideThisColumn(),
diff.getOldValue(),
diff.getValue(),
sbFields );
} else if ( changedFieldName.equals( Pattern52.FIELD_FACT_TYPE ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.FactType(),
diff.getOldValue(),
diff.getValue(),
sbFields );
}
}
}
if ( sbFields != null ) {
sb.append( TEMPLATE.updatedFields( sbFields.toSafeHtml(),
labelClass ) );
}
}
String getLiteralForCalculationType( final Integer type ) {
switch ( type ) {
case BaseSingleFieldConstraint.TYPE_LITERAL:
return GuidedDecisionTableConstants.INSTANCE.LiteralValue();
case BaseSingleFieldConstraint.TYPE_RET_VALUE:
return GuidedDecisionTableConstants.INSTANCE.Formula();
case BaseSingleFieldConstraint.TYPE_PREDICATE:
return GuidedDecisionTableConstants.INSTANCE.Predicate();
default:
return "--unknown--";
}
}
private void buildColumnDetailsUpdate( final ActionInsertFactColumnDetails details,
final ActionInsertFactColumnDetails originalDetails,
final List<BaseColumnFieldDiff> diffs,
final SafeHtmlBuilder sb ) {
sb.append( TEMPLATE.commentHeader( GuidedDecisionTableConstants.INSTANCE.DecisionTableAuditLogUpdateAction( details.getColumnHeader() ) ) );
SafeHtmlBuilder sbFields = null;
// Show changed fields too.
if ( diffs != null && !diffs.isEmpty() ) {
sbFields = new SafeHtmlBuilder();
for ( BaseColumnFieldDiff diff : diffs ) {
String changedFieldName = diff.getFieldName();
// if (changedFieldName.equals(ActionInsertFactCol52.FIELD_BOUND_NAME)) buildColumnUpdateFields(GuidedDecisionTableConstants.INSTANCE.ValueList(), diff.getOldValue(), diff.getValue(), sb);
// if (changedFieldName.equals(ActionInsertFactCol52.FIELD_TYPE)) buildColumnUpdateFields(GuidedDecisionTableConstants.INSTANCE.Binding(), diff.getOldValue(), diff.getValue(), sb);
if ( changedFieldName.equals( DTColumnConfig52.FIELD_HEADER ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.ColumnHeader(),
diff.getOldValue(),
diff.getValue(),
sbFields );
} else if ( changedFieldName.equals( ActionInsertFactCol52.FIELD_FACT_FIELD ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.Field(),
diff.getOldValue(),
diff.getValue(),
sbFields );
} else if ( changedFieldName.equals( ActionInsertFactCol52.FIELD_FACT_TYPE ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.FactType(),
diff.getOldValue(),
diff.getValue(),
sbFields );
} else if ( changedFieldName.equals( ActionInsertFactCol52.FIELD_IS_INSERT_LOGICAL ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.LogicallyInsert(),
diff.getOldValue(),
diff.getValue(),
sbFields );
} else if ( changedFieldName.equals( ActionInsertFactCol52.FIELD_VALUE_LIST ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.ValueList(),
diff.getOldValue(),
diff.getValue(),
sbFields );
} else if ( changedFieldName.equals( DTColumnConfig52.FIELD_DEFAULT_VALUE ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.DefaultValue(),
diff.getOldValue(),
diff.getValue(),
sbFields );
} else if ( changedFieldName.equals( DTColumnConfig52.FIELD_HIDE_COLUMN ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.HideThisColumn(),
diff.getOldValue(),
diff.getValue(),
sbFields );
}
}
}
if ( sbFields != null ) {
sb.append( TEMPLATE.updatedFields( sbFields.toSafeHtml(),
labelClass ) );
}
}
private void buildColumnDetailsUpdate( final LimitedEntryActionInsertFactColumnDetails details,
final LimitedEntryActionInsertFactColumnDetails originalDetails,
final List<BaseColumnFieldDiff> diffs,
final SafeHtmlBuilder sb ) {
sb.append( TEMPLATE.commentHeader( GuidedDecisionTableConstants.INSTANCE.DecisionTableAuditLogUpdateAction( details.getColumnHeader() ) ) );
SafeHtmlBuilder sbFields = null;
// Show changed fields too.
if ( diffs != null && !diffs.isEmpty() ) {
sbFields = new SafeHtmlBuilder();
for ( BaseColumnFieldDiff diff : diffs ) {
String changedFieldName = diff.getFieldName();
// if (changedFieldName.equals(ActionInsertFactCol52.FIELD_BOUND_NAME)) buildColumnUpdateFields(GuidedDecisionTableConstants.INSTANCE.ValueList(), diff.getOldValue(), diff.getValue(), sb);
// if (changedFieldName.equals(ActionInsertFactCol52.FIELD_TYPE)) buildColumnUpdateFields(GuidedDecisionTableConstants.INSTANCE.Binding(), diff.getOldValue(), diff.getValue(), sb);
if ( changedFieldName.equals( DTColumnConfig52.FIELD_HEADER ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.ColumnHeader(),
diff.getOldValue(),
diff.getValue(),
sbFields );
} else if ( changedFieldName.equals( LimitedEntryActionInsertFactCol52.FIELD_VALUE ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.Value(),
diff.getOldValue(),
diff.getValue(),
sbFields );
} else if ( changedFieldName.equals( ActionInsertFactCol52.FIELD_FACT_FIELD ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.Field(),
diff.getOldValue(),
diff.getValue(),
sbFields );
} else if ( changedFieldName.equals( ActionInsertFactCol52.FIELD_FACT_TYPE ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.FactType(),
diff.getOldValue(),
diff.getValue(),
sbFields );
} else if ( changedFieldName.equals( ActionInsertFactCol52.FIELD_IS_INSERT_LOGICAL ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.LogicallyInsert(),
diff.getOldValue(),
diff.getValue(),
sb );
} else if ( changedFieldName.equals( ActionInsertFactCol52.FIELD_VALUE_LIST ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.ValueList(),
diff.getOldValue(),
diff.getValue(),
sbFields );
} else if ( changedFieldName.equals( DTColumnConfig52.FIELD_DEFAULT_VALUE ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.DefaultValue(),
diff.getOldValue(),
diff.getValue(),
sbFields );
} else if ( changedFieldName.equals( DTColumnConfig52.FIELD_HIDE_COLUMN ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.HideThisColumn(),
diff.getOldValue(),
diff.getValue(),
sbFields );
}
}
}
if ( sbFields != null ) {
sb.append( TEMPLATE.updatedFields( sbFields.toSafeHtml(),
labelClass ) );
}
}
private void buildColumnDetailsUpdate( final ActionSetFieldColumnDetails details,
final ActionSetFieldColumnDetails originalDetails,
final List<BaseColumnFieldDiff> diffs,
final SafeHtmlBuilder sb ) {
sb.append( TEMPLATE.commentHeader( GuidedDecisionTableConstants.INSTANCE.DecisionTableAuditLogUpdateAction( details.getColumnHeader() ) ) );
SafeHtmlBuilder sbFields = null;
// Show changed fields too.
if ( diffs != null && !diffs.isEmpty() ) {
sbFields = new SafeHtmlBuilder();
for ( BaseColumnFieldDiff diff : diffs ) {
String changedFieldName = diff.getFieldName();
// if (changedFieldName.equals(ActionInsertFactCol52.FIELD_BOUND_NAME)) buildColumnUpdateFields(GuidedDecisionTableConstants.INSTANCE.ValueList(), diff.getOldValue(), diff.getValue(), sb);
// if (changedFieldName.equals(ActionInsertFactCol52.FIELD_TYPE)) buildColumnUpdateFields(GuidedDecisionTableConstants.INSTANCE.Binding(), diff.getOldValue(), diff.getValue(), sb);
if ( changedFieldName.equals( DTColumnConfig52.FIELD_HEADER ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.ColumnHeader(),
diff.getOldValue(),
diff.getValue(),
sbFields );
} else if ( changedFieldName.equals( ActionSetFieldCol52.FIELD_BOUND_NAME ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.Binding(),
diff.getOldValue(),
diff.getValue(),
sbFields );
} else if ( changedFieldName.equals( ActionSetFieldCol52.FIELD_FACT_FIELD ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.Field(),
diff.getOldValue(),
diff.getValue(),
sbFields );
} else if ( changedFieldName.equals( ActionInsertFactCol52.FIELD_IS_INSERT_LOGICAL ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.LogicallyInsert(),
diff.getOldValue(),
diff.getValue(),
sbFields );
} else if ( changedFieldName.equals( ActionSetFieldCol52.FIELD_VALUE_LIST ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.ValueList(),
diff.getOldValue(),
diff.getValue(),
sbFields );
} else if ( changedFieldName.equals( DTColumnConfig52.FIELD_DEFAULT_VALUE ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.DefaultValue(),
diff.getOldValue(),
diff.getValue(),
sbFields );
} else if ( changedFieldName.equals( DTColumnConfig52.FIELD_HIDE_COLUMN ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.HideThisColumn(),
diff.getOldValue(),
diff.getValue(),
sbFields );
} else if ( changedFieldName.equals( ActionSetFieldCol52.FIELD_UPDATE ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.UpdateEngineWithChanges(),
diff.getOldValue(),
diff.getValue(),
sbFields );
}
}
}
if ( sbFields != null ) {
sb.append( TEMPLATE.updatedFields( sbFields.toSafeHtml(),
labelClass ) );
}
}
private void buildColumnDetailsUpdate( final LimitedEntryActionSetFieldColumnDetails details,
final LimitedEntryActionSetFieldColumnDetails originalDetails,
final List<BaseColumnFieldDiff> diffs,
final SafeHtmlBuilder sb ) {
sb.append( TEMPLATE.commentHeader( GuidedDecisionTableConstants.INSTANCE.DecisionTableAuditLogUpdateAction( details.getColumnHeader() ) ) );
SafeHtmlBuilder sbFields = null;
// Show changed fields too.
if ( diffs != null && !diffs.isEmpty() ) {
sbFields = new SafeHtmlBuilder();
for ( BaseColumnFieldDiff diff : diffs ) {
String changedFieldName = diff.getFieldName();
// if (changedFieldName.equals(ActionInsertFactCol52.FIELD_BOUND_NAME)) buildColumnUpdateFields(GuidedDecisionTableConstants.INSTANCE.ValueList(), diff.getOldValue(), diff.getValue(), sb);
// if (changedFieldName.equals(ActionInsertFactCol52.FIELD_TYPE)) buildColumnUpdateFields(GuidedDecisionTableConstants.INSTANCE.Binding(), diff.getOldValue(), diff.getValue(), sb);
if ( changedFieldName.equals( DTColumnConfig52.FIELD_HEADER ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.ColumnHeader(),
diff.getOldValue(),
diff.getValue(),
sbFields );
} else if ( changedFieldName.equals( LimitedEntryActionSetFieldCol52.FIELD_VALUE ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.Value(),
diff.getOldValue(),
diff.getValue(),
sbFields );
} else if ( changedFieldName.equals( ActionInsertFactCol52.FIELD_BOUND_NAME ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.Binding(),
diff.getOldValue(),
diff.getValue(),
sbFields );
} else if ( changedFieldName.equals( ActionInsertFactCol52.FIELD_FACT_FIELD ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.Field(),
diff.getOldValue(),
diff.getValue(),
sbFields );
} else if ( changedFieldName.equals( ActionInsertFactCol52.FIELD_IS_INSERT_LOGICAL ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.LogicallyInsert(),
diff.getOldValue(),
diff.getValue(),
sbFields );
} else if ( changedFieldName.equals( ActionInsertFactCol52.FIELD_VALUE_LIST ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.ValueList(),
diff.getOldValue(),
diff.getValue(),
sbFields );
} else if ( changedFieldName.equals( DTColumnConfig52.FIELD_DEFAULT_VALUE ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.DefaultValue(),
diff.getOldValue(),
diff.getValue(),
sbFields );
} else if ( changedFieldName.equals( DTColumnConfig52.FIELD_HIDE_COLUMN ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.HideThisColumn(),
diff.getOldValue(),
diff.getValue(),
sbFields );
}
}
}
if ( sbFields != null ) {
sb.append( TEMPLATE.updatedFields( sbFields.toSafeHtml(),
labelClass ) );
}
}
private void buildColumnDetailsUpdate( final MetadataColumnDetails details,
final MetadataColumnDetails originalDetails,
final List<BaseColumnFieldDiff> diffs,
final SafeHtmlBuilder sb ) {
sb.append( TEMPLATE.commentHeader( GuidedDecisionTableConstants.INSTANCE.DecisionTableAuditLogUpdateColumn( details.getColumnHeader() ) ) );
SafeHtmlBuilder sbFields = null;
// Show changed fields too.
if ( diffs != null && !diffs.isEmpty() ) {
sbFields = new SafeHtmlBuilder();
for ( BaseColumnFieldDiff diff : diffs ) {
String changedFieldName = diff.getFieldName();
if ( changedFieldName.equals( DTColumnConfig52.FIELD_DEFAULT_VALUE ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.DefaultValue(),
diff.getOldValue(),
diff.getValue(),
sbFields );
} else if ( changedFieldName.equals( MetadataCol52.FIELD_METADATA ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.Metadata1(),
diff.getOldValue(),
diff.getValue(),
sbFields );
} else if ( changedFieldName.equals( DTColumnConfig52.FIELD_HEADER ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.ColumnHeader(),
diff.getOldValue(),
diff.getValue(),
sbFields );
} else if ( changedFieldName.equals( DTColumnConfig52.FIELD_HIDE_COLUMN ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.HideThisColumn(),
diff.getOldValue(),
diff.getValue(),
sbFields );
}
}
}
if ( sbFields != null ) {
sb.append( TEMPLATE.updatedFields( sbFields.toSafeHtml(),
labelClass ) );
}
}
private void buildColumnDetailsUpdate( final ActionWorkItemColumnDetails details,
final ActionWorkItemColumnDetails originalDetails,
final List<BaseColumnFieldDiff> diffs,
final SafeHtmlBuilder sb ) {
sb.append( TEMPLATE.commentHeader( GuidedDecisionTableConstants.INSTANCE.DecisionTableAuditLogUpdateAction( details.getColumnHeader() ) ) );
SafeHtmlBuilder sbFields = null;
// Show changed fields too.
if ( diffs != null && !diffs.isEmpty() ) {
sbFields = new SafeHtmlBuilder();
for ( BaseColumnFieldDiff diff : diffs ) {
String changedFieldName = diff.getFieldName();
if ( changedFieldName.equals( DTColumnConfig52.FIELD_HEADER ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.ColumnHeader(),
diff.getOldValue(),
diff.getValue(),
sbFields );
} else if ( changedFieldName.equals( DTColumnConfig52.FIELD_HIDE_COLUMN ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.HideThisColumn(),
diff.getOldValue(),
diff.getValue(),
sbFields );
} else if ( changedFieldName.equals( ActionWorkItemCol52.FIELD_WORKITEM_DEFINITION_NAME ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.DecisionTableAuditLogWorkItemName(),
diff.getOldValue(),
diff.getValue(),
sbFields );
} else if ( changedFieldName.equals( ActionWorkItemCol52.FIELD_WORKITEM_DEFINITION_PARAMETER_NAME ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.DecisionTableAuditLogWorkItemParameterName(),
diff.getOldValue(),
diff.getValue(),
sbFields );
} else if ( changedFieldName.equals( ActionWorkItemCol52.FIELD_WORKITEM_DEFINITION_PARAMETER_VALUE ) ) {
if ( diff instanceof WorkItemColumnParameterValueDiffImpl ) {
final String parameterName = ( (WorkItemColumnParameterValueDiffImpl) diff ).getParameterName();
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.DecisionTableAuditLogWorkItemParameterValueOnly0( parameterName ),
diff.getOldValue(),
diff.getValue(),
sbFields );
} else {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.DecisionTableAuditLogWorkItemParameterValue(),
diff.getOldValue(),
diff.getValue(),
sbFields );
}
}
}
}
if ( sbFields != null ) {
sb.append( TEMPLATE.updatedFields( sbFields.toSafeHtml(),
labelClass ) );
}
}
private void buildColumnDetailsUpdate( final ActionWorkItemInsertFactColumnDetails details,
final ActionWorkItemInsertFactColumnDetails originalDetails,
final List<BaseColumnFieldDiff> diffs,
final SafeHtmlBuilder sb ) {
sb.append( TEMPLATE.commentHeader( GuidedDecisionTableConstants.INSTANCE.DecisionTableAuditLogUpdateAction( details.getColumnHeader() ) ) );
SafeHtmlBuilder sbFields = null;
// Show changed fields too.
if ( diffs != null && !diffs.isEmpty() ) {
sbFields = new SafeHtmlBuilder();
for ( BaseColumnFieldDiff diff : diffs ) {
String changedFieldName = diff.getFieldName();
if ( changedFieldName.equals( DTColumnConfig52.FIELD_HEADER ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.ColumnHeader(),
diff.getOldValue(),
diff.getValue(),
sbFields );
} else if ( changedFieldName.equals( DTColumnConfig52.FIELD_HIDE_COLUMN ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.HideThisColumn(),
diff.getOldValue(),
diff.getValue(),
sbFields );
} else if ( changedFieldName.equals( ActionInsertFactCol52.FIELD_BOUND_NAME ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.Binding(),
diff.getOldValue(),
diff.getValue(),
sbFields );
} else if ( changedFieldName.equals( ActionInsertFactCol52.FIELD_FACT_TYPE ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.FactType(),
diff.getOldValue(),
diff.getValue(),
sbFields );
} else if ( changedFieldName.equals( ActionInsertFactCol52.FIELD_FACT_FIELD ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.Field(),
diff.getOldValue(),
diff.getValue(),
sbFields );
} else if ( changedFieldName.equals( ActionInsertFactCol52.FIELD_IS_INSERT_LOGICAL ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.LogicallyInsert(),
diff.getOldValue(),
diff.getValue(),
sbFields );
} else if ( changedFieldName.equals( ActionWorkItemInsertFactCol52.FIELD_WORK_ITEM_NAME ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.DecisionTableAuditLogWorkItemName(),
diff.getOldValue(),
diff.getValue(),
sbFields );
} else if ( changedFieldName.equals( ActionWorkItemInsertFactCol52.FIELD_WORK_ITEM_RESULT_PARAM_NAME ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.DecisionTableAuditLogWorkItemParameterName(),
diff.getOldValue(),
diff.getValue(),
sbFields );
} else if ( changedFieldName.equals( ActionWorkItemInsertFactCol52.FIELD_PARAMETER_CLASSNAME ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.DecisionTableAuditLogWorkItemParameterClassName(),
diff.getOldValue(),
diff.getValue(),
sbFields );
}
}
}
if ( sbFields != null ) {
sb.append( TEMPLATE.updatedFields( sbFields.toSafeHtml(),
labelClass ) );
}
}
private void buildColumnDetailsUpdate( final ActionWorkItemSetFieldColumnDetails details,
final ActionWorkItemSetFieldColumnDetails originalDetails,
final List<BaseColumnFieldDiff> diffs,
final SafeHtmlBuilder sb ) {
sb.append( TEMPLATE.commentHeader( GuidedDecisionTableConstants.INSTANCE.DecisionTableAuditLogUpdateAction( details.getColumnHeader() ) ) );
SafeHtmlBuilder sbFields = null;
// Show changed fields too.
if ( diffs != null && !diffs.isEmpty() ) {
sbFields = new SafeHtmlBuilder();
for ( BaseColumnFieldDiff diff : diffs ) {
String changedFieldName = diff.getFieldName();
if ( changedFieldName.equals( DTColumnConfig52.FIELD_HEADER ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.ColumnHeader(),
diff.getOldValue(),
diff.getValue(),
sbFields );
} else if ( changedFieldName.equals( DTColumnConfig52.FIELD_HIDE_COLUMN ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.HideThisColumn(),
diff.getOldValue(),
diff.getValue(),
sbFields );
} else if ( changedFieldName.equals( ActionSetFieldCol52.FIELD_BOUND_NAME ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.Binding(),
diff.getOldValue(),
diff.getValue(),
sbFields );
} else if ( changedFieldName.equals( ActionSetFieldCol52.FIELD_FACT_FIELD ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.Field(),
diff.getOldValue(),
diff.getValue(),
sbFields );
} else if ( changedFieldName.equals( ActionSetFieldCol52.FIELD_TYPE ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.FieldType(),
diff.getOldValue(),
diff.getValue(),
sbFields );
} else if ( changedFieldName.equals( ActionSetFieldCol52.FIELD_UPDATE ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.UpdateEngineWithChanges(),
diff.getOldValue(),
diff.getValue(),
sbFields );
} else if ( changedFieldName.equals( ActionWorkItemSetFieldCol52.FIELD_WORK_ITEM_NAME ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.DecisionTableAuditLogWorkItemName(),
diff.getOldValue(),
diff.getValue(),
sbFields );
} else if ( changedFieldName.equals( ActionWorkItemSetFieldCol52.FIELD_WORK_ITEM_RESULT_PARAM_NAME ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.DecisionTableAuditLogWorkItemParameterName(),
diff.getOldValue(),
diff.getValue(),
sbFields );
} else if ( changedFieldName.equals( ActionWorkItemSetFieldCol52.FIELD_PARAMETER_CLASSNAME ) ) {
buildColumnUpdateFields( GuidedDecisionTableConstants.INSTANCE.DecisionTableAuditLogWorkItemParameterClassName(),
diff.getOldValue(),
diff.getValue(),
sbFields );
}
}
}
if ( sbFields != null ) {
sb.append( TEMPLATE.updatedFields( sbFields.toSafeHtml(),
labelClass ) );
}
}
/**
* BZ-996944: A part from the column details, the updated field values must be displayed.
*/
private void buildColumnUpdateFields( final String fieldName,
final Object oldValue,
final Object newValue,
final SafeHtmlBuilder sb ) {
String _fieldName = fieldName.endsWith( ":" ) ? fieldName.substring( 0,
fieldName.length() - 1 ) : fieldName;
String _oldValue = oldValue != null ? convertValueToString( oldValue ) : "";
String _newValue = newValue != null ? convertValueToString( newValue ) : "";
sb.append( TEMPLATE.updatedField( _fieldName,
new StringBuilder( QUOTE ).append( _oldValue ).append( QUOTE ).toString(),
new StringBuilder( QUOTE ).append( _newValue ).append( QUOTE ).toString() ) );
}
private String nil( final String value ) {
return value == null ? "" : value;
}
private String nil( final PortableParameterDefinition value ) {
return value == null ? "" : value.asString();
}
private String nilLimitedEntryValue( final DTCellValue52 value ) {
String displayText = convertDTCellValueToString( value );
return displayText == null ? "" : displayText;
}
String convertValueToString( final Object o ) {
if (o == null) {
return null;
}
if ( o instanceof Date ) {
return format.format( (Date) o );
} else if ( o instanceof BigDecimal ) {
return ( (BigDecimal) o ).toPlainString();
} else {
return o.toString();
}
}
private String convertDTCellValueToString( final DTCellValue52 dcv ) {
switch ( dcv.getDataType() ) {
case BOOLEAN:
Boolean booleanValue = dcv.getBooleanValue();
return ( booleanValue == null ? null : booleanValue.toString() );
case DATE:
Date dateValue = dcv.getDateValue();
return ( dateValue == null ? null : format.format( dcv.getDateValue() ) );
case NUMERIC:
BigDecimal numericValue = (BigDecimal) dcv.getNumericValue();
return ( numericValue == null ? null : numericValue.toPlainString() );
case NUMERIC_BIGDECIMAL:
BigDecimal bigDecimalValue = (BigDecimal) dcv.getNumericValue();
return ( bigDecimalValue == null ? null : bigDecimalValue.toPlainString() );
case NUMERIC_BIGINTEGER:
BigInteger bigIntegerValue = (BigInteger) dcv.getNumericValue();
return ( bigIntegerValue == null ? null : bigIntegerValue.toString() );
case NUMERIC_BYTE:
Byte byteValue = (Byte) dcv.getNumericValue();
return ( byteValue == null ? null : byteValue.toString() );
case NUMERIC_DOUBLE:
Double doubleValue = (Double) dcv.getNumericValue();
return ( doubleValue == null ? null : doubleValue.toString() );
case NUMERIC_FLOAT:
Float floatValue = (Float) dcv.getNumericValue();
return ( floatValue == null ? null : floatValue.toString() );
case NUMERIC_INTEGER:
Integer integerValue = (Integer) dcv.getNumericValue();
return ( integerValue == null ? null : integerValue.toString() );
case NUMERIC_LONG:
Long longValue = (Long) dcv.getNumericValue();
return ( longValue == null ? null : longValue.toString() );
case NUMERIC_SHORT:
Short shortValue = (Short) dcv.getNumericValue();
return ( shortValue == null ? null : shortValue.toString() );
default:
return dcv.getStringValue();
}
}
}