Skip to content

Commit

Permalink
Merge branch 'feature/data-model'
Browse files Browse the repository at this point in the history
  • Loading branch information
mederly committed Jun 8, 2016
2 parents 0f5c22f + 1035e00 commit 4a06919
Show file tree
Hide file tree
Showing 11 changed files with 1,086 additions and 10 deletions.
Expand Up @@ -17,20 +17,15 @@

import java.util.Collection;

import com.evolveum.midpoint.model.api.context.ModelContext;
import com.evolveum.midpoint.prism.delta.ObjectDelta;
import com.evolveum.midpoint.schema.ProvisioningDiag;
import com.evolveum.midpoint.schema.RepositoryDiag;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.task.api.Task;
import com.evolveum.midpoint.util.exception.CommunicationException;
import com.evolveum.midpoint.util.exception.ConfigurationException;
import com.evolveum.midpoint.util.exception.ExpressionEvaluationException;
import com.evolveum.midpoint.util.exception.ObjectAlreadyExistsException;
import com.evolveum.midpoint.util.exception.ObjectNotFoundException;
import com.evolveum.midpoint.util.exception.SchemaException;
import com.evolveum.midpoint.util.exception.SecurityViolationException;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;

/**
* A service provided by the IDM Model focused on system diagnostic. It allows to retrieve diagnostic data
Expand Down Expand Up @@ -96,4 +91,12 @@ public interface ModelDiagnosticService {
* EXPERIMENTAL.
*/
public String executeRepositoryQuery(String query, Task task, OperationResult parentResult) throws SchemaException, SecurityViolationException;

/**
* Exports data model
*
* EXPERIMENTAL. (TODO find a better place)
*/
String exportDataModel(Collection<String> resourceOids, Task task, OperationResult parentResult)
throws SchemaException, ConfigurationException, ObjectNotFoundException, CommunicationException, SecurityViolationException;
}
Expand Up @@ -20,10 +20,11 @@

import javax.xml.namespace.QName;

import com.evolveum.midpoint.model.impl.dataModel.DataModelVisualizer;
import com.evolveum.midpoint.schema.ProvisioningDiag;
import com.evolveum.midpoint.security.api.AuthorizationConstants;
import com.evolveum.midpoint.security.api.SecurityEnforcer;
import com.evolveum.midpoint.util.exception.SecurityViolationException;
import com.evolveum.midpoint.util.exception.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Component;
Expand All @@ -45,9 +46,6 @@
import com.evolveum.midpoint.util.DebugUtil;
import com.evolveum.midpoint.util.MiscUtil;
import com.evolveum.midpoint.util.RandomString;
import com.evolveum.midpoint.util.exception.ObjectAlreadyExistsException;
import com.evolveum.midpoint.util.exception.ObjectNotFoundException;
import com.evolveum.midpoint.util.exception.SchemaException;
import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.midpoint.util.logging.TraceManager;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;
Expand All @@ -63,7 +61,8 @@ public class ModelDiagController implements ModelDiagnosticService {

public static final String CLASS_NAME_WITH_DOT = ModelDiagController.class.getName() + ".";
private static final String REPOSITORY_SELF_TEST_USER = CLASS_NAME_WITH_DOT + "repositorySelfTest.user";

private static final String EXPORT_DATA_MODEL = CLASS_NAME_WITH_DOT + "exportDataModel";

private static final String NAME_PREFIX = "selftest";
private static final int NAME_RANDOM_LENGTH = 5;

Expand All @@ -77,6 +76,8 @@ public class ModelDiagController implements ModelDiagnosticService {

private static final Trace LOGGER = TraceManager.getTrace(ModelDiagController.class);

@Autowired
private DataModelVisualizer dataModelVisualizer;

@Autowired(required = true)
private PrismContext prismContext;
Expand Down Expand Up @@ -467,4 +468,17 @@ private <T extends ObjectType> PrismObjectDefinition<T> getObjectDefinition(Clas
return prismContext.getSchemaRegistry().findObjectDefinitionByCompileTimeClass(type);
}

@Override
public String exportDataModel(Collection<String> resourceOids, Task task, OperationResult parentResult)
throws SchemaException, ConfigurationException, ObjectNotFoundException, CommunicationException, SecurityViolationException {
OperationResult result = parentResult.createSubresult(EXPORT_DATA_MODEL);
try {
String rv = dataModelVisualizer.visualize(resourceOids, task, result);
result.computeStatusIfUnknown();
return rv;
} catch(Throwable t) {
result.recordFatalError(t.getMessage(), t);
throw t;
}
}
}
@@ -0,0 +1,21 @@
package com.evolveum.midpoint.model.impl.dataModel;

import com.evolveum.midpoint.prism.path.ItemPath;
import org.jetbrains.annotations.NotNull;

/**
* @author mederly
*/
public class AdHocDataItem extends DataItem {

@NotNull private final ItemPath itemPath;

public AdHocDataItem(@NotNull ItemPath itemPath) {
this.itemPath = itemPath;
}

@Override
public String getNodeName() {
return "Unresolved: " + itemPath;
}
}
@@ -0,0 +1,12 @@
package com.evolveum.midpoint.model.impl.dataModel;

/**
* @author mederly
*/
public abstract class DataItem {

public abstract String getNodeName();
public abstract String getNodeLabel();
public abstract String getNodeStyleAttributes();

}

0 comments on commit 4a06919

Please sign in to comment.