Skip to content

Commit

Permalink
Merge branch 'master' of https://github.com/Evolveum/midpoint
Browse files Browse the repository at this point in the history
  • Loading branch information
KaterynaHonchar committed Jul 7, 2018
2 parents b752e6e + b896358 commit 311c8a4
Show file tree
Hide file tree
Showing 55 changed files with 1,053 additions and 300 deletions.
14 changes: 12 additions & 2 deletions dist/src/main/bin/midpoint.bat
Expand Up @@ -18,13 +18,23 @@ if "%MIDPOINT_HOME%" == "" (
if not exist var\log mkdir var\log
set "MIDPOINT_HOME=%BIN_DIR%..\var"
)
echo Using MIDPOINT_HOME: "%MIDPOINT_HOME%"

if not exist "%BIN_DIR%midpoint.bat" (
echo Error: The midpoint.bat file is not in bin directory or is not accessible.
goto end
)

set JAVA_OPTS=-Xms2048M -Xmx4096M -Dpython.cachedir="%MIDPOINT_HOME%\tmp" -Djavax.net.ssl.trustStore="%MIDPOINT_HOME%\keystore.jceks" -Djavax.net.ssl.trustStoreType=jceks %JAVA_OPTS%

if not exist "%BIN_DIR%setenv.bat" goto :noSetEnv
echo Applying %BIN_DIR%setenv.bat
echo.

call "%BIN_DIR%setenv.bat"

:noSetEnv
echo Using MIDPOINT_HOME: "%MIDPOINT_HOME%"

if not exist "%LIB_DIR%\midpoint.war" (
echo Error: The midpoint.war is not in the lib directory
goto end
Expand All @@ -49,7 +59,7 @@ echo Using JAVA_OPTS: "%JAVA_OPTS%"
echo Using parameters: "%*"
echo.
echo Starting midPoint.
start /b "midPoint" "%RUN_JAVA%" -jar %JAVA_OPTS% -Xms2048M -Xmx4096M -Dpython.cachedir="%MIDPOINT_HOME%\tmp" -Djavax.net.ssl.trustStore="%MIDPOINT_HOME%\keystore.jceks" -Djavax.net.ssl.trustStoreType=jceks -Dmidpoint.home="%MIDPOINT_HOME%" "%LIB_DIR%\midpoint.war" %* > "%BOOT_OUT%" 2>&1
start /b "midPoint" "%RUN_JAVA%" -jar %JAVA_OPTS% -Dmidpoint.home="%MIDPOINT_HOME%" "%LIB_DIR%\midpoint.war" %* > "%BOOT_OUT%" 2>&1
goto end

:doStop
Expand Down
Expand Up @@ -91,11 +91,21 @@ public void setModel(ModelService model) {
Validate.notNull(model, "Model service must not be null.");
this.model = model;
}

public void setPrismContext(PrismContext prismContext) {
Validate.notNull(prismContext, "Prism context must not be null.");
this.prismContext = prismContext;
}

public void setTaskManager(TaskManager taskManager) {
Validate.notNull(taskManager, "Task manager must not be null.");
this.taskManager = taskManager;
}

public void setConfiguration(MidpointConfiguration configuration) {
Validate.notNull(configuration, "Midpoint configuration must not be null.");
this.configuration = configuration;
}

public void init() throws SchemaException {
LOGGER.info("Starting initial object import (if necessary).");
Expand Down
Expand Up @@ -59,6 +59,24 @@
<select class="form-control input-sm" wicket:id="remediation"/>
</td>
</tr>
<tr class="row">
<td class="col-md-4"><wicket:message key="StageDefinitionPanel.automaticIterationAfter"/></td>
<td class="col-md-8">
<input type="text" class="form-control input-sm" wicket:id="automaticIterationAfter"/>
</td>
</tr>
<tr class="row">
<td class="col-md-4"><wicket:message key="StageDefinitionPanel.automaticIterationLimit"/></td>
<td class="col-md-8">
<input class="form-control input-sm" wicket:id="automaticIterationLimit"/>
</td>
</tr>
<tr class="row">
<td class="col-md-4"><wicket:message key="StageDefinitionPanel.overallIterationLimit"/></td>
<td class="col-md-8">
<input class="form-control input-sm" wicket:id="overallIterationLimit"/>
</td>
</tr>
<!-- TODO visually separate definition and current status -->
<!-- TODO do this in some "compressed" form to save space -->
<!-- disabled for now
Expand Down
Expand Up @@ -21,17 +21,15 @@
import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
import com.evolveum.midpoint.web.page.admin.certification.dto.CertDefinitionDto;
import com.evolveum.midpoint.web.page.admin.configuration.component.ChooseTypePanel;
import com.evolveum.midpoint.web.page.admin.configuration.component.EmptyOnBlurAjaxFormUpdatingBehaviour;
import com.evolveum.midpoint.web.page.admin.dto.ObjectViewDto;
import com.evolveum.midpoint.xml.ns._public.common.common_3.AccessCertificationCaseOutcomeStrategyType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.AccessCertificationRemediationStyleType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.AccessCertificationResponseType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.UserType;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.DropDownChoice;
import org.apache.wicket.markup.html.form.EnumChoiceRenderer;
import org.apache.wicket.markup.html.form.TextArea;
import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.markup.html.form.*;
import org.apache.wicket.model.AbstractReadOnlyModel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
Expand Down Expand Up @@ -59,6 +57,9 @@ public class DefinitionBasicPanel extends BasePanel<CertDefinitionDto> {
// private static final String ID_OWNER_INPUT = "ownerInput";
private static final String ID_OWNER_REF_CHOOSER = "ownerRefChooser";
private static final String ID_REMEDIATION = "remediation";
private static final String ID_AUTOMATIC_ITERATION_AFTER = "automaticIterationAfter";
private static final String ID_AUTOMATIC_ITERATION_LIMIT = "automaticIterationLimit";
private static final String ID_OVERALL_ITERATION_LIMIT = "overallIterationLimit";
private static final String ID_OUTCOME_STRATEGY = "outcomeStrategy";
private static final String ID_OUTCOME_STRATEGY_HELP = "outcomeStrategyHelp";
private static final String ID_STOP_REVIEW_ON = "stopReviewOn";
Expand Down Expand Up @@ -108,6 +109,20 @@ public void setObject(AccessCertificationRemediationStyleType object) {
new EnumChoiceRenderer<>(this));
add(remediation);

final TextField<String> automaticIterationAfterField = new TextField<>(ID_AUTOMATIC_ITERATION_AFTER,
new PropertyModel<>(getModel(), CertDefinitionDto.F_AUTOMATIC_ITERATION_AFTER));
add(automaticIterationAfterField);

final TextField<Integer> automaticIterationLimitField = new TextField<>(ID_AUTOMATIC_ITERATION_LIMIT,
new PropertyModel<>(getModel(), CertDefinitionDto.F_AUTOMATIC_ITERATION_LIMIT));
automaticIterationLimitField.add(new EmptyOnBlurAjaxFormUpdatingBehaviour());
add(automaticIterationLimitField);

final TextField<Integer> overallIterationLimitField = new TextField<>(ID_OVERALL_ITERATION_LIMIT,
new PropertyModel<>(getModel(), CertDefinitionDto.F_OVERALL_ITERATION_LIMIT));
overallIterationLimitField.add(new EmptyOnBlurAjaxFormUpdatingBehaviour());
add(overallIterationLimitField);

DropDownChoice outcomeStrategy =
new DropDownChoice<>(ID_OUTCOME_STRATEGY,
new PropertyModel<>(getModel(), CertDefinitionDto.F_OUTCOME_STRATEGY),
Expand Down
Expand Up @@ -555,7 +555,7 @@ public void onClick(AjaxRequestTarget target) {
}) {
@Override
public IModel<Boolean> getVisible() {
return new ReadOnlyModel<>(() -> dto.getState() == AccessCertificationCampaignStateType.CLOSED);
return new ReadOnlyModel<>(dto::isReiterable);
}
});
dto.getMenuItems().add(new InlineMenuItem(createStringResource("PageCertCampaigns.menu.delete"),
Expand Down Expand Up @@ -1034,7 +1034,7 @@ private void actOnCampaignsPerformed(AjaxRequestTarget target, String operationN
}
break;
case OPERATION_REITERATE_CAMPAIGN:
if (campaign.getState() == AccessCertificationCampaignStateType.CLOSED) {
if (item.isReiterable()) {
acs.reiterateCampaign(campaign.getOid(), task, result);
processed++;
}
Expand Down
Expand Up @@ -256,7 +256,7 @@ public void savePerformed(AjaxRequestTarget target) {
LOGGER.trace("Access definition delta:\n{}", delta.debugDump());
}
delta.normalize();
if (delta != null && !delta.isEmpty()) {
if (!delta.isEmpty()) {
getPrismContext().adopt(delta);
ModelExecuteOptions options = new ModelExecuteOptions();
options.setRaw(true);
Expand Down
Expand Up @@ -149,4 +149,8 @@ private String computeDeadlineAsString(PageBase page) {
public AccessCertificationCampaignType getCampaign() {
return campaign;
}

public boolean isReiterable() {
return CertCampaignTypeUtil.isReiterable(campaign);
}
}
Expand Up @@ -58,6 +58,9 @@ public class CertDefinitionDto implements Serializable {
public static final String F_XML = "xml";
public static final String F_OWNER = "owner";
public static final String F_REMEDIATION_STYLE = "remediationStyle";
public static final String F_AUTOMATIC_ITERATION_AFTER = "automaticIterationAfter";
public static final String F_AUTOMATIC_ITERATION_LIMIT = "automaticIterationLimit";
public static final String F_OVERALL_ITERATION_LIMIT = "overallIterationLimit";
public static final String F_SCOPE_DEFINITION = "scopeDefinition";
public static final String F_STAGE_DEFINITION = "stageDefinition";
public static final String F_LAST_STARTED = "lastStarted";
Expand All @@ -71,6 +74,9 @@ public class CertDefinitionDto implements Serializable {
private final DefinitionScopeDto definitionScopeDto;
@NotNull private final List<StageDefinitionDto> stageDefinition;
private AccessCertificationRemediationStyleType remediationStyle;
private String automaticIterationAfter;
private Integer automaticIterationLimit;
private Integer overallIterationLimit;
private List<AccessCertificationResponseType> revokeOn;
private AccessCertificationCaseOutcomeStrategyType outcomeStrategy;
//private List<AccessCertificationResponseType> stopReviewOn, advanceToNextStageOn;
Expand All @@ -95,6 +101,12 @@ public CertDefinitionDto(AccessCertificationDefinitionType definition, PageBase
remediationStyle = AccessCertificationRemediationStyleType.AUTOMATED; // TODO consider the default...
revokeOn = new ArrayList<>();
}
AccessCertificationReiterationDefinitionType reiteration = definition.getReiterationDefinition();
if (reiteration != null) {
automaticIterationAfter = reiteration.getStartsAfter() != null ? reiteration.getStartsAfter().toString() : null;
automaticIterationLimit = reiteration.getLimitWhenAutomatic();
overallIterationLimit = reiteration.getLimit();
}
if (definition.getReviewStrategy() != null) {
outcomeStrategy = definition.getReviewStrategy().getOutcomeStrategy();
} else {
Expand Down Expand Up @@ -164,6 +176,22 @@ public AccessCertificationDefinitionType getUpdatedDefinition(PrismContext prism
} else {
definition.setRemediationDefinition(null);
}
if (automaticIterationAfter != null || automaticIterationLimit != null || overallIterationLimit != null) {
Duration startsAfter;
try {
startsAfter = XmlTypeConverter.createDuration(automaticIterationAfter);
} catch (IllegalArgumentException e) {
// TODO better validation
throw new IllegalArgumentException("Couldn't parse automatic reiteration time interval ('" + automaticIterationAfter + "')", e);
}
definition.setReiterationDefinition(
new AccessCertificationReiterationDefinitionType(prismContext)
.startsAfter(startsAfter)
.limitWhenAutomatic(automaticIterationLimit)
.limit(overallIterationLimit));
} else {
definition.setReiterationDefinition(null);
}
if (outcomeStrategy != null) {
if (definition.getReviewStrategy() == null) {
definition.setReviewStrategy(new AccessCertificationCaseReviewStrategyType());
Expand Down Expand Up @@ -221,6 +249,30 @@ public void setRemediationStyle(AccessCertificationRemediationStyleType remediat
this.remediationStyle = remediationStyle;
}

public String getAutomaticIterationAfter() {
return automaticIterationAfter;
}

public void setAutomaticIterationAfter(String value) {
this.automaticIterationAfter = value;
}

public Integer getAutomaticIterationLimit() {
return automaticIterationLimit;
}

public void setAutomaticIterationLimit(Integer automaticIterationLimit) {
this.automaticIterationLimit = automaticIterationLimit;
}

public Integer getOverallIterationLimit() {
return overallIterationLimit;
}

public void setOverallIterationLimit(Integer overallIterationLimit) {
this.overallIterationLimit = overallIterationLimit;
}

private DefinitionScopeDto createDefinitionScopeDto(AccessCertificationScopeType scopeTypeObj, PrismContext prismContext) {
DefinitionScopeDto dto = new DefinitionScopeDto();

Expand Down
Expand Up @@ -146,6 +146,7 @@ <h3 class="box-title"><wicket:message key="PageAbout.title.jvmProperties"/></h3>
<a class="btn btn-default" wicket:id="testProvisioning"/>
<a class="btn btn-default" wicket:id="cleanupActivitiProcesses" />
<a class="btn btn-default" wicket:id="clearCssJsCache" />
<a class="btn btn-danger" wicket:id="factoryDefault" />
</div>

</wicket:extend>
Expand Down

0 comments on commit 311c8a4

Please sign in to comment.