use of org.structr.common.SecurityContext in project structr by structr.
the class ParseJavaFunction method apply.
@Override
public Object apply(final ActionContext ctx, final Object caller, final Object[] sources) throws FrameworkException {
try {
if (!(arrayHasLengthAndAllElementsNotNull(sources, 1) && sources[0] instanceof String)) {
return null;
}
try {
final SecurityContext securityContext = ctx.getSecurityContext();
final App app = StructrApp.getInstance(securityContext);
// Parse string as Java code
final String resultJson = new GsonBuilder().setPrettyPrinting().create().toJson(new JavaParserModule(app).parse((String) sources[0]).get());
return resultJson;
} catch (final ParseProblemException ex) {
logException(caller, ex, sources);
}
} catch (final IllegalArgumentException e) {
logParameterError(caller, sources, ctx.isJavaScriptContext());
return usage(ctx.isJavaScriptContext());
}
return "";
}
use of org.structr.common.SecurityContext in project structr by structr.
the class ODSExporter method exportAttributes.
public static void exportAttributes(final ODSExporter thisNode, final String uuid) throws FrameworkException {
final SecurityContext securityContext = thisNode.getSecurityContext();
final File output = thisNode.getResultDocument();
final VirtualType transformation = thisNode.getTransformationProvider();
try {
final App app = StructrApp.getInstance();
final Result result = app.nodeQuery(AbstractNode.class).and(GraphObject.id, uuid).getResult();
final Result transformedResult = transformation.transformOutput(securityContext, AbstractNode.class, result);
Map<String, Object> nodeProperties = new HashMap<>();
GraphObjectMap node = (GraphObjectMap) transformedResult.get(0);
node.getPropertyKeys(null).forEach(p -> nodeProperties.put(p.dbName(), node.getProperty(p)));
OdfSpreadsheetDocument spreadsheet = OdfSpreadsheetDocument.loadDocument(output.getFileOnDisk().getAbsolutePath());
OdfTable sheet = spreadsheet.getTableList().get(0);
Iterator<Entry<String, Object>> it = nodeProperties.entrySet().iterator();
while (it.hasNext()) {
Entry<String, Object> currentEntry = it.next();
String address = currentEntry.getKey();
Object val = currentEntry.getValue();
if (val instanceof Collection) {
Collection col = (Collection) val;
writeCollectionToCells(sheet, sheet.getCellByPosition(address), col);
} else if (val instanceof String[]) {
String[] arr = (String[]) val;
List<String> list = new ArrayList<>(Arrays.asList(arr));
writeCollectionToCells(sheet, sheet.getCellByPosition(address), list);
} else {
writeObjectToCell(sheet.getCellByPosition(address), val);
}
}
spreadsheet.save(output.getFileOnDisk().getAbsolutePath());
spreadsheet.close();
} catch (Exception e) {
logger.error("Error while exporting to ODS", e);
}
}
use of org.structr.common.SecurityContext in project structr by structr.
the class ODTExporter method exportAttributes.
static void exportAttributes(final ODTExporter thisNode, final String uuid) throws FrameworkException {
final SecurityContext securityContext = thisNode.getSecurityContext();
final File output = thisNode.getResultDocument();
final VirtualType transformation = thisNode.getTransformationProvider();
try {
final App app = StructrApp.getInstance();
final Result result = app.nodeQuery(AbstractNode.class).and(GraphObject.id, uuid).getResult();
final Result transformedResult = transformation.transformOutput(securityContext, AbstractNode.class, result);
Map<String, Object> nodeProperties = new HashMap<>();
GraphObjectMap node = (GraphObjectMap) transformedResult.get(0);
node.getPropertyKeys(null).forEach(p -> nodeProperties.put(p.dbName(), node.getProperty(p)));
TextDocument text = TextDocument.loadDocument(output.getFileOnDisk().getAbsolutePath());
NodeList nodes = text.getContentRoot().getElementsByTagName(ODT_FIELD_TAG_NAME);
for (int i = 0; i < nodes.getLength(); i++) {
Node currentNode = nodes.item(i);
NamedNodeMap attrs = currentNode.getAttributes();
Node fieldName = attrs.getNamedItem(ODT_FIELD_ATTRIBUTE_NAME);
Object nodeFieldValue = nodeProperties.get(fieldName.getNodeValue());
Node currentContent = attrs.getNamedItem(ODT_FIELD_ATTRIBUTE_VALUE);
if (nodeFieldValue != null) {
if (nodeFieldValue instanceof String[]) {
String[] arr = (String[]) nodeFieldValue;
List<String> list = new ArrayList<>(Arrays.asList(arr));
StringBuilder sb = new StringBuilder();
list.forEach(s -> sb.append(s + "\n"));
currentContent.setNodeValue(sb.toString());
} else if (nodeFieldValue instanceof Collection) {
Collection col = (Collection) nodeFieldValue;
StringBuilder sb = new StringBuilder();
col.forEach(s -> sb.append(s + "\n"));
currentContent.setNodeValue(sb.toString());
} else {
currentContent.setNodeValue(nodeFieldValue.toString());
}
}
}
text.save(output.getFileOnDisk().getAbsolutePath());
text.close();
} catch (Exception e) {
logger.error("Error while exporting to ODT", e);
}
}
use of org.structr.common.SecurityContext in project structr by structr.
the class VideoFile method updateVideoInfo.
static void updateVideoInfo(final VideoFile thisVideo) {
final SecurityContext securityContext = thisVideo.getSecurityContext();
try (final Tx tx = StructrApp.getInstance(securityContext).tx()) {
final Map<String, Object> info = AVConv.newInstance(securityContext, thisVideo).getVideoInfo();
if (info != null && info.containsKey("streams")) {
final List<Map<String, Object>> streams = (List<Map<String, Object>>) info.get("streams");
for (final Map<String, Object> stream : streams) {
final String codecType = (String) stream.get("codec_type");
if (codecType != null) {
if ("video".equals(codecType)) {
VideoFile.setIfNotNull(thisVideo, StructrApp.key(VideoFile.class, "videoCodecName"), stream.get("codec_long_name"));
VideoFile.setIfNotNull(thisVideo, StructrApp.key(VideoFile.class, "videoCodec"), stream.get("codec_name"));
VideoFile.setIfNotNull(thisVideo, StructrApp.key(VideoFile.class, "pixelFormat"), stream.get("pix_fmt"));
VideoFile.setIfNotNull(thisVideo, StructrApp.key(VideoFile.class, "width"), VideoFile.toInt(stream.get("width")));
VideoFile.setIfNotNull(thisVideo, StructrApp.key(VideoFile.class, "height"), VideoFile.toInt(stream.get("height")));
VideoFile.setIfNotNull(thisVideo, StructrApp.key(VideoFile.class, "duration"), VideoFile.toDouble(stream.get("duration")));
} else if ("audio".equals(codecType)) {
VideoFile.setIfNotNull(thisVideo, StructrApp.key(VideoFile.class, "audioCodecName"), stream.get("codec_long_name"));
VideoFile.setIfNotNull(thisVideo, StructrApp.key(VideoFile.class, "audioCodec"), stream.get("codec_name"));
VideoFile.setIfNotNull(thisVideo, StructrApp.key(VideoFile.class, "sampleRate"), VideoFile.toInt(stream.get("sampleRate")));
}
}
}
}
tx.success();
} catch (FrameworkException fex) {
logger.warn("", fex);
}
}
use of org.structr.common.SecurityContext in project structr by structr.
the class DeployCommand method importListData.
private <T extends NodeInterface> void importListData(final Class<T> type, final List<Map<String, Object>> data, final PropertyMap... additionalData) throws FrameworkException {
final SecurityContext context = SecurityContext.getSuperUserInstance();
context.setDoTransactionNotifications(false);
final App app = StructrApp.getInstance(context);
try (final Tx tx = app.tx()) {
for (final T toDelete : app.nodeQuery(type).getAsList()) {
app.delete(toDelete);
}
for (final Map<String, Object> entry : data) {
final PropertyMap map = PropertyMap.inputTypeToJavaType(context, type, entry);
// allow caller to insert additional data for better creation performance
for (final PropertyMap add : additionalData) {
map.putAll(add);
}
app.create(type, map);
}
tx.success();
} catch (FrameworkException fex) {
logger.error("Unable to import {}, aborting with {}", type.getSimpleName(), fex.getMessage());
fex.printStackTrace();
throw fex;
}
}
Aggregations