Skip to content

Commit

Permalink
Merge pull request #673 from devgateway/hotfix/v2.12.7.4
Browse files Browse the repository at this point in the history
AMP-25207 AMP 2.12.7.4 release
  • Loading branch information
jdeanquin-dg authored Jan 26, 2017
2 parents 8d73793 + d6d6937 commit eeb1661
Show file tree
Hide file tree
Showing 10 changed files with 191 additions and 177 deletions.
8 changes: 3 additions & 5 deletions amp/TEMPLATE/ampTemplate/script/common/CommonFilterUtils.js
Original file line number Diff line number Diff line change
Expand Up @@ -115,14 +115,12 @@ CommonFilterUtils.convertJavaFiltersToJS = function(data) {
blob.columnFilters[item.name + ' Sub-Sub-Sector'] = blob.columnFilters[item.name];
break;

case 'DATE':
// FilterUtils.fillDateBlob(blob.otherFilters.date,
// item.attributes);
case 'DATE':
var newDate = {};
_.map(item.values, function(item_, i) {
if (item_.dateIntervalType === "min") {
if (item_.dateIntervalType === "min" || item_.type === "min") {
newDate['start'] = item_.name;
} else if (item_.dateIntervalType === "max") {
} else if (item_.dateIntervalType === "max" || item_.type === "max") {
newDate['end'] = item_.name;
}
return newDate;
Expand Down
4 changes: 2 additions & 2 deletions amp/TEMPLATE/ampTemplate/site-config.xml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?xml version="1.0"?>
<!DOCTYPE page [
<!ENTITY ampVersion "2.12.7.3">
<!ENTITY releaseDate "30.12.2016">
<!ENTITY ampVersion "2.12.7.4">
<!ENTITY releaseDate "26.01.2017">
<!ENTITY buildDate "${buildDate}">
<!ENTITY buildSource "${buildSource}">
]>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,20 +1,20 @@
package org.dgfoundation.amp.reports.saiku.export;

import java.io.ByteArrayOutputStream;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;

import org.apache.log4j.Logger;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.streaming.SXSSFRow;
import org.apache.poi.xssf.streaming.SXSSFSheet;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.dgfoundation.amp.ar.view.xls.IntWrapper;
Expand Down Expand Up @@ -185,19 +185,21 @@ protected void renderReportTableUnits(SXSSFWorkbook wb, SXSSFSheet sheet, Genera
* @param report
*/
protected void renderReportTableHeader(Workbook wb, Sheet sheet, GeneratedReport report) {
int hiddenColumnsCnt = 0;
List<Integer> hiddenColumnPositions = new ArrayList<>();
Set<CellRangeAddress> mergedCells = new HashSet<CellRangeAddress>();

for(int i=0; i < report.generatedHeaders.size(); i++) {
Row row = sheet.createRow(initHeaderRowOffset + i);
for(HeaderCell headerCell : report.generatedHeaders.get(i)) {

if (isHiddenColumn(headerCell.originalName)) {
hiddenColumnsCnt++;
hiddenColumnPositions.add(headerCell.getStartColumn());
continue;
}

int cellColumnPos = headerCell.getStartColumn() - hiddenColumnsCnt;
// when a column (not measure) is splitted (like MTEFs columns), we need to calculate the position of hidden columns
int offsetPosition = getOffsetPositionOfHiddenColumns(hiddenColumnPositions, headerCell.getStartColumn());
int cellColumnPos = headerCell.getStartColumn() - offsetPosition;
Cell cell = row.createCell(cellColumnPos);
cell.setCellValue(headerCell.getName());
setMaxColWidth(sheet, cell, cellColumnPos);
Expand Down Expand Up @@ -540,6 +542,14 @@ protected boolean hasReportGeneratedDummyColumn(GeneratedReport report) {
return report.spec.isSummaryReport() && (report.spec.getHierarchies() == null || report.spec.getHierarchies().isEmpty());
}

private int getOffsetPositionOfHiddenColumns(List<Integer> hiddenColumnPositions, int columnPosition) {
int offsetPosition = hiddenColumnPositions.stream().filter(
i -> i < columnPosition)
.collect(Collectors.toList()).size();

return offsetPosition;
}

protected String getReportSheetName() {
return this.reportSheetName;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,21 @@

import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.*;
import javax.servlet.ServletContext;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.Logger;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
Expand All @@ -21,19 +32,24 @@
import org.digijava.kernel.util.RequestUtils;
import org.digijava.module.aim.annotations.activityversioning.CompareOutput;
import org.digijava.module.aim.annotations.activityversioning.VersionableCollection;
import org.digijava.module.aim.annotations.activityversioning.VersionableFieldTextEditor;
import org.digijava.module.aim.annotations.activityversioning.VersionableFieldSimple;
import org.digijava.module.aim.annotations.activityversioning.VersionableFieldTextEditor;
import org.digijava.module.aim.dbentity.AmpActivityContact;
import org.digijava.module.aim.dbentity.AmpActivityFields;
import org.digijava.module.aim.dbentity.AmpActivityGroup;
import org.digijava.module.aim.dbentity.AmpActivityVersion;
import org.digijava.module.aim.dbentity.AmpTeamMember;
import org.digijava.module.aim.dbentity.Versionable;
import org.digijava.module.aim.form.CompareActivityVersionsForm;
import org.digijava.module.aim.helper.ActivityHistory;
import org.digijava.module.aim.helper.Constants;
import org.digijava.module.aim.helper.FormatHelper;
import org.digijava.module.aim.helper.TeamMember;
import org.digijava.module.aim.util.*;
import org.digijava.module.aim.util.ActivityUtil;
import org.digijava.module.aim.util.ActivityVersionUtil;
import org.digijava.module.aim.util.AuditLoggerUtil;
import org.digijava.module.aim.util.LuceneUtil;
import org.digijava.module.aim.util.TeamMemberUtil;
import org.digijava.module.editor.util.DbUtil;
import org.digijava.module.translation.util.ContentTranslationUtil;
import org.hibernate.FlushMode;
Expand Down Expand Up @@ -93,7 +109,11 @@ public ActionForward compare(ActionMapping mapping, ActionForm form, HttpServlet
ActivityVersionUtil.initializeActivity(vForm.getActivityTwo());

vForm.setOldActivity(vForm.getActivityOne());



ActivityHistory auditHistory1 = getAuditHistory(vForm.getActivityOne());
ActivityHistory auditHistory2 = getAuditHistory(vForm.getActivityTwo());

// Retrieve annotated for versioning fields.
Field[] fields = AmpActivityFields.class.getDeclaredFields();
for (int i = 0; i < fields.length; i++) {
Expand All @@ -102,13 +122,12 @@ public ActionForward compare(ActionMapping mapping, ActionForm form, HttpServlet

if (fields[i].isAnnotationPresent(VersionableFieldSimple.class)) {
// Obtain "get" method from field.
Method auxMethod = ActivityVersionUtil.getMethodFromFieldName(fields[i].getName(), AmpActivityVersion.class,
"get");
Method auxMethod = ActivityVersionUtil.getMethodFromFieldName(fields[i].getName(), AmpActivityVersion.class, "get");

// Compare values from 2 versions.
Object auxResult1 = auxMethod.invoke(vForm.getActivityOne(), null);
Object auxResult2 = auxMethod.invoke(vForm.getActivityTwo(), null);

// Obtain annotation object.
VersionableFieldSimple auxAnnotation = (VersionableFieldSimple) fields[i]
.getAnnotation(VersionableFieldSimple.class);
Expand All @@ -122,9 +141,18 @@ public ActionForward compare(ActionMapping mapping, ActionForm form, HttpServlet
auxResult2 = null;
}
}

// AMP-25074 - retrieve information about who and when modified the activity
// from amp_audit_logger (if it is empty in the activity object)
if (StringUtils.equals(fields[i].getName(), "modifiedBy")) {
auxResult1 = ActivityUtil.getModifiedByUserName(vForm.getActivityOne(), auditHistory1);
auxResult2 = ActivityUtil.getModifiedByUserName(vForm.getActivityTwo(), auditHistory2);
} else if (StringUtils.equals(fields[i].getName(), "updatedDate")) {
auxResult1 = ActivityUtil.getModifiedByDate(vForm.getActivityOne(), auditHistory1);
auxResult2 = ActivityUtil.getModifiedByDate(vForm.getActivityTwo(), auditHistory2);
}

// Compare values, if both are null then they are considered
// equal.
// Compare values, if both are null then they are considered equal.
if (!(auxResult1 == null && auxResult2 == null)) {
if ((auxResult1 != null && auxResult2 == null)
|| (auxResult1 == null && auxResult2 != null)
Expand All @@ -141,12 +169,9 @@ public ActionForward compare(ActionMapping mapping, ActionForm form, HttpServlet
output.setBlockSingleChangeOutput(auxAnnotation.blockSingleChange());
output.setMandatoryForSingleChangeOutput(auxAnnotation.mandatoryForSingleChange());

// Differentiate Wrappers from Classes that
// implements
// Versionable.
// Differentiate Wrappers from Classes that implements Versionable.
Class auxReturnType = auxMethod.getReturnType();


if (auxReturnType.getName().equals("java.util.Date")
|| auxReturnType.getName().equals("java.sql.Date")
|| auxReturnType.getName().equals("java.lang.String")
Expand All @@ -159,19 +184,11 @@ public ActionForward compare(ActionMapping mapping, ActionForm form, HttpServlet
|| auxReturnType.getName().equals("java.math.BigDecimal")) {


String aux1String = auxResult1==null?"":auxResult1.toString();
String aux2String = auxResult2==null?"":auxResult2.toString();
if (auxReturnType.getName().equals("java.util.Date")
|| auxReturnType.getName().equals("java.sql.Date")){
Date date1 = (Date) auxResult1;
Date date2 = (Date) auxResult2;
aux1String = FormatHelper.formatDate(date1);
aux2String = FormatHelper.formatDate(date2);
}

output.setStringOutput(new String[]{auxResult1 != null ? aux1String : "",
auxResult2 != null ? aux2String : ""});
output.setOriginalValueOutput(new Object[] { auxResult1, auxResult2 });
String aux1String = getStringOrEmpty(auxResult1);
String aux2String = getStringOrEmpty(auxResult2);

output.setStringOutput(new String[] {aux1String, aux2String});
output.setOriginalValueOutput(new Object[] {auxResult1, auxResult2});
} else if (ActivityVersionUtil.implementsVersionable(auxReturnType.getInterfaces())) {
Versionable auxVersionable1 = Versionable.class.cast(auxMethod.invoke(vForm
.getActivityOne(), null));
Expand All @@ -185,10 +202,16 @@ public ActionForward compare(ActionMapping mapping, ActionForm form, HttpServlet
output.setStringOutput(new String[] { output1, output2 });
output.setOriginalValueOutput(new Object[] { auxResult1, auxResult2 });
} else {
output.setStringOutput(new String[] { auxResult1 != null ? auxResult1.toString() : "",
auxResult2 != null ? auxResult2.toString() : "" });
output.setOriginalValueOutput(new Object[] { auxResult1, auxResult2 });
if ("modifiedBy".equals(fields[i].getName())) {
// this field cannot be used in merging
output.setBlockSingleChangeOutput(true);
}

output.setStringOutput(new String[] {getStringOrEmpty(auxResult1), getStringOrEmpty(auxResult2)});
output.setOriginalValueOutput(new Object[] {auxResult1, auxResult2});
}


vForm.getOutputCollection().add(output);
}
}
Expand Down Expand Up @@ -626,8 +649,11 @@ public ActionForward saveNewActivity(ActionMapping mapping, ActionForm form, Htt
AmpActivityVersion prevVersion = auxActivityGroup.getAmpActivityLastVersion();
auxActivityGroup.setAmpActivityLastVersion(auxActivity);
session.save(auxActivityGroup);

Date updatedTime = Calendar.getInstance().getTime();
auxActivity.setAmpActivityGroup(auxActivityGroup);
auxActivity.setModifiedDate(Calendar.getInstance().getTime());
auxActivity.setModifiedDate(updatedTime);
auxActivity.setUpdatedDate(updatedTime);
auxActivity.setModifiedBy(member);

auxActivity.setMergedActivity(true);
Expand Down Expand Up @@ -670,47 +696,6 @@ public ActionForward saveNewActivity(ActionMapping mapping, ActionForm form, Htt
return mapping.findForward("index");
}

// TODO: Note: ONLY FOR DEVELOPMENT PURPOSES. Delete this method when the
// jsp is ready for merging data.
private List<CompareOutput> generateRandomMergedData(List<CompareOutput> input) {
List<CompareOutput> output = new ArrayList<CompareOutput>();
Iterator<CompareOutput> iter = input.iterator();
while (iter.hasNext()) {
CompareOutput auxOutput = iter.next();
CompareOutput newOutput = new CompareOutput();
double rnd1 = Math.random();
double rnd2 = Math.random();
if (auxOutput.getBlockSingleChangeOutput() == false) {
newOutput.setFieldOutput(auxOutput.getFieldOutput());
newOutput.setMandatoryForSingleChangeOutput(auxOutput.getMandatoryForSingleChangeOutput());
if (rnd1 >= rnd2) {
newOutput.setOriginalValueOutput(new Object[] { auxOutput.getOriginalValueOutput()[0], null });
} else {
newOutput.setOriginalValueOutput(new Object[] { auxOutput.getOriginalValueOutput()[1], null });
}
output.add(newOutput);
}
}
return output;
}

private Object initializeCollections(Session session, Object aux) {
try {
Hibernate.initialize(aux);
} catch (Exception e) {
logger.error(e);
e.printStackTrace();
try {
// Should never enter here.
Hibernate.initialize(aux);
} catch (Exception e2) {
logger.error(e2);
e2.printStackTrace();
}
}
return aux;
}

private void setAdvancemode(CompareActivityVersionsForm vForm, HttpServletRequest request){
boolean ispartofamanagetmentworkspace = false;
boolean iscurrentworkspacemanager = false;
Expand All @@ -727,5 +712,25 @@ private void setAdvancemode(CompareActivityVersionsForm vForm, HttpServletReques
vForm.setAdvancemode(!ispartofamanagetmentworkspace & iscurrentworkspacemanager);
}

private String getStringOrEmpty(Object o) {
if (o != null) {
if (o instanceof Date || o instanceof java.sql.Date) {
return FormatHelper.formatDate((Date) o);
}

return o.toString();
}

return "";
}

private ActivityHistory getAuditHistory(AmpActivityVersion activity) {
ActivityHistory auditHistory = null;

if (activity.getModifiedBy() == null || (activity.getUpdatedDate() == null && activity.getModifiedDate() == null)) {
auditHistory = ActivityUtil.getModifiedByInfoFromAuditLogger(activity.getAmpActivityId());
}

return auditHistory;
}
}
Loading

0 comments on commit eeb1661

Please sign in to comment.