Skip to content

Commit

Permalink
Activity log details page #148 [skip ci]
Browse files Browse the repository at this point in the history
  • Loading branch information
hmiguim authored and 006627 committed Jan 28, 2020
1 parent cf4acd6 commit aa49b95
Show file tree
Hide file tree
Showing 45 changed files with 426 additions and 229 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
import com.databasepreservation.common.client.index.facets.Facets;
import com.databasepreservation.common.client.index.sort.Sorter;
import com.databasepreservation.common.client.models.activity.logs.ActivityLogEntry;
import com.databasepreservation.common.client.models.activity.logs.LogEntryParameter;
import com.databasepreservation.common.client.models.activity.logs.ActivityLogWrapper;
import com.databasepreservation.common.client.models.activity.logs.LogEntryState;
import com.databasepreservation.common.client.models.structure.ViewerColumn;
import com.databasepreservation.common.client.models.structure.ViewerDatabase;
Expand Down Expand Up @@ -60,8 +60,8 @@ public IndexResult<ActivityLogEntry> find(FindRequest findRequest, String locale
controllerAssistant.checkRoles(user);

try {
final IndexResult<ActivityLogEntry> result = ViewerFactory.getSolrManager().find(ActivityLogEntry.class, findRequest.filter, findRequest.sorter,
findRequest.sublist, findRequest.facets);
final IndexResult<ActivityLogEntry> result = ViewerFactory.getSolrManager().find(ActivityLogEntry.class,
findRequest.filter, findRequest.sorter, findRequest.sublist, findRequest.facets);
return I18nUtility.translate(result, ActivityLogEntry.class, locale);
} catch (GenericException | RequestNotValidException e) {
state = LogEntryState.FAILURE;
Expand All @@ -74,27 +74,21 @@ public IndexResult<ActivityLogEntry> find(FindRequest findRequest, String locale
}

@Override
public ActivityLogEntry retrieve(String logUUID) {
public ActivityLogWrapper retrieve(String logUUID) {
ControllerAssistant controllerAssistant = new ControllerAssistant() {};
User user = UserUtility.getUser(request);
LogEntryState state = LogEntryState.SUCCESS;

controllerAssistant.checkRoles(user);

try {
final ActivityLogEntry retrieve = ViewerFactory.getSolrManager().retrieve(ActivityLogEntry.class, logUUID);

final ActivityLogEntry retrieve = ViewerFactory.getSolrManager().retrieve(ActivityLogEntry.class, logUUID);
final ViewerDatabase viewerDatabase = getViewerDatabase(retrieve.getParameters());
if (viewerDatabase != null) {
final Map<String, String> displayNameColumn = getDisplayNameColumn(viewerDatabase.getMetadata(),
retrieve.getParameters());
final List<LogEntryParameter> parameters = replaceColumnSolrName(displayNameColumn, retrieve.getParameters());

retrieve.setParameters(parameters);
return retrieve;
retrieve.setParameters(replaceColumnSolrName(viewerDatabase.getMetadata(), retrieve.getParameters()));
}

return null;
return new ActivityLogWrapper(retrieve);
} catch (GenericException | NotFoundException | RequestNotValidException e) {
state = LogEntryState.FAILURE;
throw new RESTException(e);
Expand All @@ -104,76 +98,67 @@ public ActivityLogEntry retrieve(String logUUID) {
}
}

private ViewerDatabase getViewerDatabase(List<LogEntryParameter> parameters)
private ViewerDatabase getViewerDatabase(Map<String, String> parameters)
throws GenericException, RequestNotValidException {
for (LogEntryParameter parameter : parameters) {
if (parameter.getName().equals(ViewerConstants.CONTROLLER_DATABASE_ID_PARAM)) {
final String databaseUuid = parameter.getValue();
List<String> fieldsToReturn = Collections.singletonList(ViewerConstants.SOLR_DATABASES_METADATA);
Filter filterParam = new Filter(new SimpleFilterParameter(ViewerConstants.INDEX_ID, databaseUuid));
final IndexResult<ViewerDatabase> viewerDatabase = ViewerFactory.getSolrManager().find(ViewerDatabase.class,
filterParam, Sorter.NONE, new Sublist(), Facets.NONE, fieldsToReturn);

return viewerDatabase.getResults().get(0);
}
}

return null;
final String databaseUuid = parameters.get(ViewerConstants.CONTROLLER_DATABASE_ID_PARAM);

if (databaseUuid == null)
return null;

List<String> fieldsToReturn = Collections.singletonList(ViewerConstants.SOLR_DATABASES_METADATA);
Filter filterParam = new Filter(new SimpleFilterParameter(ViewerConstants.INDEX_ID, databaseUuid));
final IndexResult<ViewerDatabase> viewerDatabase = ViewerFactory.getSolrManager().find(ViewerDatabase.class,
filterParam, Sorter.NONE, new Sublist(), Facets.NONE, fieldsToReturn);

if (viewerDatabase.getTotalCount() == 0)
return null;

return viewerDatabase.getResults().get(0);
}

private List<LogEntryParameter> replaceColumnSolrName(Map<String, String> mapperSolrToDisplayName,
List<LogEntryParameter> parameters) throws GenericException {

for (LogEntryParameter parameter : parameters) {
if (parameter.getName().equals(ViewerConstants.CONTROLLER_FILTER_PARAM)) {
final Filter filter = JsonUtils.getObjectFromJson(parameter.getValue(), Filter.class);
for (FilterParameter filterParameter : filter.getParameters()) {
if (filterParameter.getName().startsWith(ViewerConstants.SOLR_INDEX_ROW_COLUMN_NAME_PREFIX)) {
filterParameter.setName(mapperSolrToDisplayName.get(filterParameter.getName()));
final String jsonFromObject = JsonUtils.getJsonFromObject(filter);
parameter.setValue(jsonFromObject);
}
}
private Map<String, String> replaceColumnSolrName(ViewerMetadata metadata, Map<String, String> parameters)
throws GenericException {

final String jsonFilter = parameters.get(ViewerConstants.CONTROLLER_FILTER_PARAM);
final Filter filter = JsonUtils.getObjectFromJson(jsonFilter, Filter.class);

final Map<String, String> mapperSolrToDisplayName = getDisplayNameColumn(metadata, filter);

for (FilterParameter filterParameter : filter.getParameters()) {
if (filterParameter.getName().startsWith(ViewerConstants.SOLR_INDEX_ROW_COLUMN_NAME_PREFIX)) {
filterParameter.setName(mapperSolrToDisplayName.get(filterParameter.getName()));
}
}

final String jsonFromObject = JsonUtils.getJsonFromObject(filter);
parameters.put(ViewerConstants.CONTROLLER_FILTER_PARAM, jsonFromObject);

return parameters;
}

private String getTableIdFromFilter(List<LogEntryParameter> parameters) throws GenericException {
for (LogEntryParameter parameter : parameters) {
if (parameter.getName().equals(ViewerConstants.CONTROLLER_FILTER_PARAM)) {
final Filter filter = JsonUtils.getObjectFromJson(parameter.getValue(), Filter.class);
for (FilterParameter filterParameter : filter.getParameters()) {
if (filterParameter.getName().equals(ViewerConstants.SOLR_ROWS_TABLE_ID)
&& filterParameter instanceof SimpleFilterParameter) {
return ((SimpleFilterParameter) filterParameter).getValue();
}
}
private String getTableIdFromFilter(Filter filter) {
for (FilterParameter filterParameter : filter.getParameters()) {
if (filterParameter.getName().equals(ViewerConstants.SOLR_ROWS_TABLE_ID)
&& filterParameter instanceof SimpleFilterParameter) {
return ((SimpleFilterParameter) filterParameter).getValue();
}
}

return null;
}

private Map<String, String> getDisplayNameColumn(ViewerMetadata metadata, List<LogEntryParameter> parameters)
throws GenericException {
private Map<String, String> getDisplayNameColumn(ViewerMetadata metadata, Filter filter) {
Map<String, String> solrNameToDisplayName = new HashMap<>();

String tableId = getTableIdFromFilter(parameters);
String tableId = getTableIdFromFilter(filter);

for (LogEntryParameter parameter : parameters) {
if (parameter.getName().equals(ViewerConstants.CONTROLLER_FILTER_PARAM)) {
final Filter filter = JsonUtils.getObjectFromJson(parameter.getValue(), Filter.class);
for (FilterParameter filterParameter : filter.getParameters()) {
if (filterParameter.getName().startsWith(ViewerConstants.SOLR_INDEX_ROW_COLUMN_NAME_PREFIX)) {
final List<ViewerColumn> columns = metadata.getTableById(tableId).getColumns();
for (FilterParameter filterParameter : filter.getParameters()) {
if (filterParameter.getName().startsWith(ViewerConstants.SOLR_INDEX_ROW_COLUMN_NAME_PREFIX)) {
final List<ViewerColumn> columns = metadata.getTableById(tableId).getColumns();

for (ViewerColumn column : columns) {
if (column.getSolrName().equals(filterParameter.getName())) {
solrNameToDisplayName.put(column.getSolrName(), column.getDisplayName());
}
}
for (ViewerColumn column : columns) {
if (column.getSolrName().equals(filterParameter.getName())) {
solrNameToDisplayName.put(column.getSolrName(), column.getDisplayName());
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,8 @@ public ViewerDatabase retrieve(String databaseUUID, String id) {
throw new RESTException(e);
} finally {
// register action
controllerAssistant.registerAction(user, databaseUUID, state, ViewerConstants.CONTROLLER_DATABASE_ID_PARAM, databaseUUID);
controllerAssistant.registerAction(user, databaseUUID, state, ViewerConstants.CONTROLLER_DATABASE_ID_PARAM,
databaseUUID);
}
}

Expand All @@ -183,7 +184,8 @@ public Boolean deleteDatabase(String databaseUUID) {
throw new RESTException(e);
} finally {
// register action
controllerAssistant.registerAction(user, databaseUUID, state, ViewerConstants.CONTROLLER_DATABASE_ID_PARAM, databaseUUID);
controllerAssistant.registerAction(user, databaseUUID, state, ViewerConstants.CONTROLLER_DATABASE_ID_PARAM,
databaseUUID);
}
}

Expand Down Expand Up @@ -211,12 +213,12 @@ public Boolean deleteSolrData(String databaseUUID) {
throw new RESTException(e);
} finally {
// register action
controllerAssistant.registerAction(user, databaseUUID, state, ViewerConstants.CONTROLLER_DATABASE_ID_PARAM, databaseUUID);
controllerAssistant.registerAction(user, databaseUUID, state, ViewerConstants.CONTROLLER_DATABASE_ID_PARAM,
databaseUUID);
}
return false;
}

//
@Override
public IndexResult<ViewerRow> findRows(String databaseUUID, FindRequest findRequest, String localeString)
throws RESTException {
Expand All @@ -226,22 +228,27 @@ public IndexResult<ViewerRow> findRows(String databaseUUID, FindRequest findRequ

controllerAssistant.checkRoles(user);

long count = 0;

try {
return ViewerFactory.getSolrManager().findRows(databaseUUID, findRequest.filter, findRequest.sorter,
findRequest.sublist, findRequest.facets);
final IndexResult<ViewerRow> viewerRowIndexResult = ViewerFactory.getSolrManager().findRows(databaseUUID,
findRequest.filter, findRequest.sorter, findRequest.sublist, findRequest.facets);
count = viewerRowIndexResult.getTotalCount();
return viewerRowIndexResult;
} catch (GenericException | RequestNotValidException e) {
state = LogEntryState.FAILURE;
throw new RESTException(e);
} finally {
// register action
controllerAssistant.registerAction(user, databaseUUID, state, ViewerConstants.CONTROLLER_DATABASE_ID_PARAM,
databaseUUID, ViewerConstants.CONTROLLER_FILTER_PARAM, JsonUtils.getJsonFromObject(findRequest.filter),
ViewerConstants.CONTROLLER_SUBLIST_PARAM, JsonUtils.getJsonFromObject(findRequest.sublist));
ViewerConstants.CONTROLLER_SUBLIST_PARAM, JsonUtils.getJsonFromObject(findRequest.sublist),
ViewerConstants.CONTROLLER_RETRIEVE_COUNT, count);
}
}

@Override
public ViewerRow retrieveRows(String databaseUUID, String rowUUID) throws RESTException {
public ViewerRow retrieveRow(String databaseUUID, String rowUUID) throws RESTException {
ControllerAssistant controllerAssistant = new ControllerAssistant() {};
User user = UserUtility.getUser(request);

Expand All @@ -256,8 +263,8 @@ public ViewerRow retrieveRows(String databaseUUID, String rowUUID) throws RESTEx
throw new RESTException(e);
} finally {
// register action
controllerAssistant.registerAction(user, databaseUUID, state, ViewerConstants.CONTROLLER_DATABASE_ID_PARAM, databaseUUID,
ViewerConstants.CONTROLLER_ROW_ID_PARAM, rowUUID);
controllerAssistant.registerAction(user, databaseUUID, state, ViewerConstants.CONTROLLER_DATABASE_ID_PARAM,
databaseUUID, ViewerConstants.CONTROLLER_ROW_ID_PARAM, rowUUID);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -174,9 +174,9 @@ public List<SearchField> getSearchFields(ViewerTable viewerTable) {
return AdvancedSearchUtils.getSearchFieldsFromTable(viewerTable);
} finally {
// register action
controllerAssistant.registerAction(user, viewerTable.getUUID(), state,
ViewerConstants.CONTROLLER_DATABASE_ID_PARAM,
viewerTable.getName());
controllerAssistant.registerAction(user, viewerTable.getUuid(), state,
ViewerConstants.CONTROLLER_DATABASE_ID_PARAM, viewerTable.getSchemaUUID(),
ViewerConstants.CONTROLLER_TABLE_ID_PARAM, viewerTable.getUuid());
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ private void writeToZipFile(ZipArchiveOutputStream out, ViewerRow row, List<View
if (binaryColumn != null) {
out.putArchiveEntry(new ZipArchiveEntry(ViewerConstants.INTERNAL_ZIP_LOB_FOLDER + cellEntry.getValue().getValue()));
final InputStream inputStream = Files
.newInputStream(LobPathManager.getPath(ViewerFactory.getViewerConfiguration(), databaseUUID, table.getUUID(),
.newInputStream(LobPathManager.getPath(ViewerFactory.getViewerConfiguration(), databaseUUID, table.getUuid(),
binaryColumn.getColumnIndexInEnclosingTable(), row.getUuid()));
IOUtils.copy(inputStream, out);
inputStream.close();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -431,6 +431,18 @@ public class ViewerConstants {
public static final String CONTROLLER_SAVED_SEARCH_DESCRIPTION_PARAM = "description";
public static final String CONTROLLER_SAVED_SEARCH_PARAM = "saved-search";
public static final String CONTROLLER_SAVED_SEARCH_UUID_PARAM = "saved-search-uuid";
public static final String CONTROLLER_RETRIEVE_COUNT = "total-count";
public static final String CONTROLLER_USERNAME_PARAM = "username";

/*
* REST CONTROLLERS
*/
public static final String CONTROLLER_ACTIVITY_LOG_RESOURCE = "com.databasepreservation.common.api.v1.ActivityLogResource";
public static final String CONTROLLER_DATABASE_RESOURCE = "com.databasepreservation.common.api.v1.DatabaseResource";
public static final String CONTROLLER_FILE_RESOURCE = "com.databasepreservation.common.api.v1.FileResource";
public static final String CONTROLLER_SIARD_RESOURCE = "com.databasepreservation.common.api.v1.SIARDResource";
public static final String CONTROLLER_SEARCH_RESOURCE = "com.databasepreservation.common.api.v1.SearchResource";
public static final String CONTROLLER_USER_LOGIN_CONTROLLER = "com.databasepreservation.common.server.controller.UserLoginController";

/**
* private constructor
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ public SafeHtml getValue(ViewerRow row) {
final String value = row.getCells().get(solrColumnName).getValue();
ret = SafeHtmlUtils
.fromTrustedString(CommonClientUtils.getAnchorForLOBDownload(getObject().getFirst().getUuid(),
table.getUUID(), row.getUuid(), viewerColumn.getColumnIndexInEnclosingTable(), value).toString());
table.getUuid(), row.getUuid(), viewerColumn.getColumnIndexInEnclosingTable(), value).toString());
}

return ret;
Expand Down Expand Up @@ -357,7 +357,7 @@ private String getExportURL(String zipFilename, String filename, boolean exportA
Facets.NONE, false, solrColumns);
ExportRequest exportRequest = new ExportRequest(filename, zipFilename, description, exportLobs);

return ExportResourcesUtils.getExportURL(database.getUuid(), table.getUUID(), findRequest, exportRequest);
return ExportResourcesUtils.getExportURL(database.getUuid(), table.getUuid(), findRequest, exportRequest);
}

private String getExportURL(String filename, boolean exportAll, boolean description) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@ public void onSuccess(Void result) {
tableRowList.getSelectionModel().addSelectionChangeHandler(event -> {
ViewerRow record = tableRowList.getSelectionModel().getSelectedObject();
if (record != null) {
HistoryManager.gotoRecord(database.getUuid(), table.getUUID(), record.getUuid());
HistoryManager.gotoRecord(database.getUuid(), table.getUuid(), record.getUuid());
}
});

Expand Down Expand Up @@ -317,7 +317,7 @@ private void saveQuery() {
searchPanel.querySavedHandler(true, database, savedSearchUUID);
}, (String errorMessage) -> {
searchPanel.querySavedHandler(false, database, null);
}).save(database.getUuid(), table.getUUID(), table.getName(), messages.searchOnTable(table.getName()), "",
}).save(database.getUuid(), table.getUuid(), table.getName(), messages.searchOnTable(table.getName()), "",
currentSearchInfo);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -251,9 +251,9 @@ private SidebarHyperlink createTableItem(final ViewerSchema schema, final Viewer
schema.getName() + " " + iconTag + " " + table.getName());
}
SidebarHyperlink tableLink = new SidebarHyperlink(html,
HistoryManager.linkToTable(database.getUuid(), table.getUUID()));
HistoryManager.linkToTable(database.getUuid(), table.getUuid()));
tableLink.setH6().setIndent2();
list.put(table.getUUID(), tableLink);
list.put(table.getUuid(), tableLink);
sidebarGroup.add(tableLink);

return tableLink;
Expand All @@ -273,8 +273,8 @@ private SidebarHyperlink createViewItem(final ViewerSchema schema, final ViewerV
FontAwesomeIconManager.TABLE, schema.getName() + " " + iconTag + " " + materializedTable.getNameWithoutPrefix());
}
viewLink = new SidebarHyperlink(html,
HistoryManager.linkToTable(database.getUuid(), materializedTable.getUUID())).setTooltip("Materialized View");
list.put(materializedTable.getUUID(), viewLink);
HistoryManager.linkToTable(database.getUuid(), materializedTable.getUuid())).setTooltip("Materialized View");
list.put(materializedTable.getUuid(), viewLink);
} else if (schema.getCustomViewTable(view.getName()) != null) {
final ViewerTable customViewTable = schema.getCustomViewTable(view.getName());
if (totalSchemas == 1) {
Expand All @@ -284,8 +284,8 @@ private SidebarHyperlink createViewItem(final ViewerSchema schema, final ViewerV
html = FontAwesomeIconManager.getStackedIconSafeHtml(FontAwesomeIconManager.SCHEMA_VIEWS,
FontAwesomeIconManager.COG, schema.getName() + " " + iconTag + " " + customViewTable.getNameWithoutPrefix());
}
viewLink = new SidebarHyperlink(html, HistoryManager.linkToTable(database.getUuid(), customViewTable.getUUID())).setTooltip("Custom View");
list.put(customViewTable.getUUID(), viewLink);
viewLink = new SidebarHyperlink(html, HistoryManager.linkToTable(database.getUuid(), customViewTable.getUuid())).setTooltip("Custom View");
list.put(customViewTable.getUuid(), viewLink);
} else {
if (totalSchemas == 1) {
html = FontAwesomeIconManager.getTagSafeHtml(FontAwesomeIconManager.SCHEMA_VIEWS, view.getName());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -171,10 +171,10 @@ private void init() {
for (ViewerTable table : schema.getTables()) {

SidebarHyperlink tableLink = new SidebarHyperlink(table.getName(),
HistoryManager.linkToDesktopMetadataTable(database.getUuid(), table.getUUID()));
HistoryManager.linkToDesktopMetadataTable(database.getUuid(), table.getUuid()));
tableLink.setH6().setIndent2();
tableLink.setTextBySafeHTML(FontAwesomeIconManager.getTagSafeHtml(FontAwesomeIconManager.TABLE, table.getName()));
list.put(table.getUUID(), tableLink);
list.put(table.getUuid(), tableLink);
sidebarGroup.add(tableLink);
tableItems.add(tableLink);

Expand Down
Loading

0 comments on commit aa49b95

Please sign in to comment.