Skip to content

Commit

Permalink
#1193 Environment panel inside the administration
Browse files Browse the repository at this point in the history
  • Loading branch information
car031 committed Jun 7, 2023
1 parent 9703bae commit ac133cf
Show file tree
Hide file tree
Showing 3 changed files with 158 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package com.logicaldoc.gui.common.client.data;

import com.smartgwt.client.data.DataSource;
import com.smartgwt.client.data.fields.DataSourceTextField;

/**
* Datasource get the environment variables
*
* @author Marco Meschieri - LogicalDOC
* @since 8.8.4
*/
public class EnvironmentDS extends DataSource {
public EnvironmentDS() {
setRecordXPath("/list/entry");
DataSourceTextField name = new DataSourceTextField("name");
DataSourceTextField scope = new DataSourceTextField("scope");
DataSourceTextField value = new DataSourceTextField("value");

setFields(name, value, scope);
setClientOnly(true);
setDataURL("data/environment.xml");
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
package com.logicaldoc.gui.frontend.client.system;

import com.logicaldoc.gui.common.client.data.EnvironmentDS;
import com.logicaldoc.gui.common.client.i18n.I18N;
import com.logicaldoc.gui.common.client.util.LD;
import com.logicaldoc.gui.common.client.widgets.grid.RefreshableListGrid;
import com.smartgwt.client.types.SelectionStyle;
import com.smartgwt.client.widgets.grid.ListGridField;
import com.smartgwt.client.widgets.layout.VLayout;

/**
* This panel shows the list of environment variables
*
* @author Marco Meschieri - LogicalDOC
* @since 8.8.5
*/
public class EnvironmentPanel extends VLayout {

private static final String VALUE = "value";

private static final String SCOPE = "scope";

private RefreshableListGrid grid;

public EnvironmentPanel() {
setWidth100();
setHeight100();
}

@Override
public void onDraw() {
ListGridField name = new ListGridField("name", I18N.message("setting"), 210);
name.setCanFilter(true);
name.setCanSort(true);

ListGridField value = new ListGridField(VALUE, I18N.message(VALUE), 280);
value.setCanFilter(true);
value.setCanSort(true);

ListGridField scope = new ListGridField(SCOPE, I18N.message(SCOPE), 80);
scope.setCanFilter(true);
scope.setCanSort(true);

grid = new RefreshableListGrid();
grid.setWidth100();
grid.setHeight100();
grid.setEmptyMessage(I18N.message("notitemstoshow"));
grid.setCanExpandRecords(false);
grid.setShowRecordComponents(true);
grid.setShowRecordComponentsByCell(true);
grid.setCanFreezeFields(true);
grid.setAutoFetchData(true);
grid.setSelectionType(SelectionStyle.MULTIPLE);
grid.setFilterOnKeypress(true);
grid.setShowFilterEditor(true);
grid.setDataSource(new EnvironmentDS());
grid.setFields(name, value, scope);
grid.addDoubleClickHandler(event -> {
LD.askForValue(I18N.message(VALUE), I18N.message(VALUE),
grid.getSelectedRecord().getAttributeAsString("name") + " = "
+ grid.getSelectedRecord().getAttributeAsString(VALUE),
350, val -> {
// Nothing to do
});
event.cancel();
});

setMembers(grid);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
package com.logicaldoc.web.data;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Locale;
import java.util.Map;
import java.util.Properties;

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

import com.logicaldoc.core.PersistenceException;
import com.logicaldoc.core.document.dao.DocumentDAO;
import com.logicaldoc.core.security.Session;
import com.logicaldoc.util.Context;

/**
* This servlet is responsible for retrieving all the environmen variable
*
* @author Marco Meschieri - LogicalDOC
* @since 8.8.5
*/
public class EnvironmentDataServlet extends AbstractDataServlet {

private static final String ENTRY_CLOSE = "</entry>";

private static final String ENTRY_SCOPE_DATABASE_SCOPE = "<entry><scope>database</scope>";

private static final long serialVersionUID = 1L;

@Override
protected void service(HttpServletRequest request, HttpServletResponse response, Session session, Integer max,
Locale locale) throws PersistenceException, IOException {

PrintWriter writer = response.getWriter();
writer.write("<list>");

Map<String, String> env = System.getenv();
for (Map.Entry<String, String> entry : env.entrySet()) {
writer.print("<entry><scope>system</scope>");
writer.print("<name><![CDATA[" + entry.getKey() + "]]></name>");
writer.print("<value><![CDATA[" + entry.getValue() + "]]></value>");
writer.print(ENTRY_CLOSE);
}

Properties props = System.getProperties();
for (Map.Entry<Object, Object> entry : props.entrySet()) {
writer.print("<entry><scope>java</scope>");
writer.print("<name><![CDATA[" + entry.getKey() + "]]></name>");
writer.print("<value><![CDATA[" + entry.getValue() + "]]></value>");
writer.print(ENTRY_CLOSE);
}

DocumentDAO dao = (DocumentDAO) Context.get().getBean("DocumentDAO");
Map<String, String> meta = dao.getDatabaseMetadata();
for (Map.Entry<String, String> entry : meta.entrySet()) {
writer.print(ENTRY_SCOPE_DATABASE_SCOPE);
writer.print("<name>" + entry.getKey() + "</name>");
writer.print("<value><![CDATA[" + entry.getValue() + "]]></value>");
writer.print(ENTRY_CLOSE);
}

writer.write("</list>");
}
}

0 comments on commit ac133cf

Please sign in to comment.