http://git-wip-us.apache.org/repos/asf/syncope/blob/47b9f64b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/report/ReportList.java ---------------------------------------------------------------------- diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/report/ReportList.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/report/ReportList.java index 1d3e5de..7fca5c0 100644 --- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/report/ReportList.java +++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/report/ReportList.java @@ -24,7 +24,7 @@ public class ReportList extends AbstractReportCommand { public void list() { try { - reportResultManager.fromValueToView(reportService.list()); + reportResultManager.fromValueToView(reportSyncopeOperations.list()); } catch (final SyncopeClientException ex) { reportResultManager.generic(ex.getMessage()); }
http://git-wip-us.apache.org/repos/asf/syncope/blob/47b9f64b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/report/ReportListJobs.java ---------------------------------------------------------------------- diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/report/ReportListJobs.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/report/ReportListJobs.java index 9bc688e..5b13cbf 100644 --- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/report/ReportListJobs.java +++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/report/ReportListJobs.java @@ -26,7 +26,7 @@ public class ReportListJobs extends AbstractReportCommand { public void list() { try { for (final JobStatusType jobStatusType : JobStatusType.values()) { - reportResultManager.printReportExecution(reportService.listJobs(jobStatusType)); + reportResultManager.printReportExecution(reportSyncopeOperations.listJobs(jobStatusType)); } } catch (final SyncopeClientException ex) { reportResultManager.generic(ex.getMessage()); http://git-wip-us.apache.org/repos/asf/syncope/blob/47b9f64b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/report/ReportRead.java ---------------------------------------------------------------------- diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/report/ReportRead.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/report/ReportRead.java index d1ab975..9a1ebc8 100644 --- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/report/ReportRead.java +++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/report/ReportRead.java @@ -40,9 +40,9 @@ public class ReportRead extends AbstractReportCommand { final List<ReportTO> reportTOs = new ArrayList<>(); for (final String parameter : input.getParameters()) { try { - reportTOs.add(reportService.read(Long.valueOf(parameter))); + reportTOs.add(reportSyncopeOperations.read(parameter)); } catch (final NumberFormatException ex) { - reportResultManager.managerNumberFormatException("report", parameter); + reportResultManager.numberFormatException("report", parameter); } catch (final WebServiceException | SyncopeClientException ex) { if (ex.getMessage().startsWith("NotFound")) { reportResultManager.notFoundError("Report", parameter); http://git-wip-us.apache.org/repos/asf/syncope/blob/47b9f64b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/report/ReportReadExecution.java ---------------------------------------------------------------------- diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/report/ReportReadExecution.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/report/ReportReadExecution.java index 95c61cd..45d1c54 100644 --- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/report/ReportReadExecution.java +++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/report/ReportReadExecution.java @@ -41,7 +41,7 @@ public class ReportReadExecution extends AbstractReportCommand { final List<ReportExecTO> reportExecTOs = new ArrayList<>(); for (final String parameter : input.getParameters()) { try { - reportExecTOs.add(reportService.readExecution(Long.valueOf(parameter))); + reportExecTOs.add(reportSyncopeOperations.readExecution(parameter)); } catch (final WebServiceException | SyncopeClientException ex) { System.out.println("Error:"); if (ex.getMessage().startsWith("NotFound")) { @@ -50,7 +50,7 @@ public class ReportReadExecution extends AbstractReportCommand { reportResultManager.generic(ex.getMessage()); } } catch (final NumberFormatException ex) { - reportResultManager.managerNumberFormatException("report", parameter); + reportResultManager.numberFormatException("report", parameter); } } reportResultManager.printReportExecution(reportExecTOs); http://git-wip-us.apache.org/repos/asf/syncope/blob/47b9f64b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/report/ReportSyncopeOperations.java ---------------------------------------------------------------------- diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/report/ReportSyncopeOperations.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/report/ReportSyncopeOperations.java new file mode 100644 index 0000000..1cf4514 --- /dev/null +++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/report/ReportSyncopeOperations.java @@ -0,0 +1,65 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.syncope.client.cli.commands.report; + +import java.util.List; +import javax.ws.rs.core.Response; +import org.apache.syncope.client.cli.SyncopeServices; +import org.apache.syncope.common.lib.to.ReportExecTO; +import org.apache.syncope.common.lib.to.ReportTO; +import org.apache.syncope.common.lib.types.JobStatusType; +import org.apache.syncope.common.lib.types.ReportExecExportFormat; +import org.apache.syncope.common.rest.api.service.ReportService; + +public class ReportSyncopeOperations { + + private final ReportService reportService = SyncopeServices.get(ReportService.class); + + public ReportExecTO readExecution(final String executionid) { + return reportService.readExecution(Long.valueOf(executionid)); + } + + public ReportTO read(final String reportId) { + return reportService.read(Long.valueOf(reportId)); + } + + public List<ReportExecTO> listJobs(final JobStatusType jobStatusType) { + return reportService.listJobs(jobStatusType); + } + + public List<ReportTO> list() { + return reportService.list(); + } + + public Response exportExecutionResult(final String executionKey, final ReportExecExportFormat fmt) { + return reportService.exportExecutionResult(Long.valueOf(executionKey), fmt); + } + + public void execute(final String reportId) { + reportService.execute(Long.valueOf(reportId)); + } + + public void deleteExecution(final String executionId) { + reportService.deleteExecution(Long.valueOf(executionId)); + } + + public void delete(final String reportId) { + reportService.delete(Long.valueOf(reportId)); + } +} http://git-wip-us.apache.org/repos/asf/syncope/blob/47b9f64b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/resource/AbstractResourceCommand.java ---------------------------------------------------------------------- diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/resource/AbstractResourceCommand.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/resource/AbstractResourceCommand.java index 85d4a2d..943f405 100644 --- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/resource/AbstractResourceCommand.java +++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/resource/AbstractResourceCommand.java @@ -18,13 +18,10 @@ */ package org.apache.syncope.client.cli.commands.resource; -import org.apache.syncope.client.cli.SyncopeServices; -import org.apache.syncope.common.rest.api.service.ResourceService; - public abstract class AbstractResourceCommand { - protected final ResourceService resourceService = SyncopeServices.get(ResourceService.class); - + protected final ResourceSyncopeOperations resourceSyncopeOperations = new ResourceSyncopeOperations(); + protected final ResourceResultManager resourceResultManager = new ResourceResultManager(); } http://git-wip-us.apache.org/repos/asf/syncope/blob/47b9f64b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/resource/ResourceDelete.java ---------------------------------------------------------------------- diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/resource/ResourceDelete.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/resource/ResourceDelete.java index c3ecd84..9068b7d 100644 --- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/resource/ResourceDelete.java +++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/resource/ResourceDelete.java @@ -35,10 +35,10 @@ public class ResourceDelete extends AbstractResourceCommand { if (input.getParameters().length >= 1) { for (final String parameter : input.getParameters()) { try { - resourceService.delete(parameter); + resourceSyncopeOperations.delete(parameter); resourceResultManager.deletedMessage("resource", parameter); } catch (final NumberFormatException ex) { - resourceResultManager.managerNumberFormatException("resource", parameter); + resourceResultManager.numberFormatException("resource", parameter); } catch (final SyncopeClientException | WebServiceException ex) { if (ex.getMessage().startsWith("NotFound")) { resourceResultManager.notFoundError("Resource", parameter); http://git-wip-us.apache.org/repos/asf/syncope/blob/47b9f64b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/resource/ResourceList.java ---------------------------------------------------------------------- diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/resource/ResourceList.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/resource/ResourceList.java index 85f05f5..27f0d74 100644 --- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/resource/ResourceList.java +++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/resource/ResourceList.java @@ -24,7 +24,7 @@ public class ResourceList extends AbstractResourceCommand { public void list() { try { - resourceResultManager.toView(resourceService.list()); + resourceResultManager.toView(resourceSyncopeOperations.list()); } catch (final SyncopeClientException ex) { resourceResultManager.generic(ex.getMessage()); } http://git-wip-us.apache.org/repos/asf/syncope/blob/47b9f64b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/resource/ResourceRead.java ---------------------------------------------------------------------- diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/resource/ResourceRead.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/resource/ResourceRead.java index 3790c02..85cd669 100644 --- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/resource/ResourceRead.java +++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/resource/ResourceRead.java @@ -39,9 +39,9 @@ public class ResourceRead extends AbstractResourceCommand { final List<ResourceTO> resourceTOs = new ArrayList<>(); for (final String parameter : input.getParameters()) { try { - resourceTOs.add(resourceService.read(parameter)); + resourceTOs.add(resourceSyncopeOperations.read(parameter)); } catch (final NumberFormatException ex) { - resourceResultManager.managerNumberFormatException("resource", parameter); + resourceResultManager.numberFormatException("resource", parameter); } catch (final SyncopeClientException | WebServiceException ex) { if (ex.getMessage().startsWith("NotFound")) { resourceResultManager.notFoundError("Resource", parameter); http://git-wip-us.apache.org/repos/asf/syncope/blob/47b9f64b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/resource/ResourceResultManager.java ---------------------------------------------------------------------- diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/resource/ResourceResultManager.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/resource/ResourceResultManager.java index 91847f4..d598910 100644 --- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/resource/ResourceResultManager.java +++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/resource/ResourceResultManager.java @@ -54,6 +54,7 @@ public class ResourceResultManager extends CommonsResultManager { System.out.println(" delete trace level: " + resourceTO.getDeleteTraceLevel()); System.out.println(" update trace level: " + resourceTO.getUpdateTraceLevel()); System.out.println(" sync trace level: " + resourceTO.getSyncTraceLevel()); + System.out.println(""); } private void printProvision(final List<ProvisionTO> provisionTOs) { @@ -66,14 +67,12 @@ public class ResourceResultManager extends CommonsResultManager { System.out.println(" MAPPING: "); printMapping(provisionTO.getMapping()); } - System.out.println(""); } private void printMapping(final MappingTO mappingTO) { System.out.println(" ConnObjectLink: " + mappingTO.getConnObjectLink()); System.out.println(" MAPPING ITEM: "); printMappingItem(mappingTO.getItems()); - System.out.println(""); } private void printMappingItem(final List<MappingItemTO> mappingItemTOs) { @@ -88,8 +87,8 @@ public class ResourceResultManager extends CommonsResultManager { System.out.println(" purpose: " + mappingItemTO.getPurpose()); System.out.println(" connector object key: " + mappingItemTO.isConnObjectKey()); System.out.println(" password: " + mappingItemTO.isPassword()); + System.out.println(""); } - System.out.println(""); } } http://git-wip-us.apache.org/repos/asf/syncope/blob/47b9f64b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/resource/ResourceSyncopeOperations.java ---------------------------------------------------------------------- diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/resource/ResourceSyncopeOperations.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/resource/ResourceSyncopeOperations.java new file mode 100644 index 0000000..9ddedf8 --- /dev/null +++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/resource/ResourceSyncopeOperations.java @@ -0,0 +1,51 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.syncope.client.cli.commands.resource; + +import java.util.List; +import org.apache.syncope.client.cli.SyncopeServices; +import org.apache.syncope.common.lib.SyncopeClientException; +import org.apache.syncope.common.lib.to.ResourceTO; +import org.apache.syncope.common.rest.api.service.ResourceService; + +public class ResourceSyncopeOperations { + + private final ResourceService resourceService = SyncopeServices.get(ResourceService.class); + + public void delete(final String name) { + resourceService.delete(name); + } + + public List<ResourceTO> list() { + return resourceService.list(); + } + + public ResourceTO read(final String name) { + return resourceService.read(name); + } + + public boolean exists(final String name) { + try { + read(name); + return true; + } catch (final SyncopeClientException ex) { + return false; + } + } +} http://git-wip-us.apache.org/repos/asf/syncope/blob/47b9f64b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/schema/AbstractSchemaCommand.java ---------------------------------------------------------------------- diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/schema/AbstractSchemaCommand.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/schema/AbstractSchemaCommand.java index 3074135..96dae04 100644 --- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/schema/AbstractSchemaCommand.java +++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/schema/AbstractSchemaCommand.java @@ -18,13 +18,10 @@ */ package org.apache.syncope.client.cli.commands.schema; -import org.apache.syncope.client.cli.SyncopeServices; -import org.apache.syncope.common.rest.api.service.SchemaService; - public abstract class AbstractSchemaCommand { - protected final SchemaService schemaService = SyncopeServices.get(SchemaService.class); - + protected final SchemaSyncopeOperations schemaSyncopeOperations = new SchemaSyncopeOperations(); + protected final SchemaResultManager schemaResultManager = new SchemaResultManager(); } http://git-wip-us.apache.org/repos/asf/syncope/blob/47b9f64b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/schema/SchemaDelete.java ---------------------------------------------------------------------- diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/schema/SchemaDelete.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/schema/SchemaDelete.java index 9cf6fe2..0850e2f 100644 --- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/schema/SchemaDelete.java +++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/schema/SchemaDelete.java @@ -41,7 +41,7 @@ public class SchemaDelete extends AbstractSchemaCommand { final String[] parameters = Arrays.copyOfRange(input.getParameters(), 1, input.parameterNumber()); try { for (final String parameter : parameters) { - schemaService.delete(SchemaType.valueOf(input.firstParameter()), parameter); + schemaSyncopeOperations.delete(SchemaType.valueOf(input.firstParameter()), parameter); schemaResultManager.deletedMessage("Schema", parameter); } } catch (final SyncopeClientException | WebServiceException ex) { http://git-wip-us.apache.org/repos/asf/syncope/blob/47b9f64b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/schema/SchemaList.java ---------------------------------------------------------------------- diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/schema/SchemaList.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/schema/SchemaList.java index 5f51604..404a487 100644 --- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/schema/SchemaList.java +++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/schema/SchemaList.java @@ -41,7 +41,7 @@ public class SchemaList extends AbstractSchemaCommand { try { final SchemaType schemaType = SchemaType.valueOf(input.firstParameter()); final LinkedList<AbstractSchemaTO> schemaTOs = new LinkedList<>(); - for (final AbstractSchemaTO schemaTO : schemaService.list(schemaType)) { + for (final AbstractSchemaTO schemaTO : schemaSyncopeOperations.list(schemaType)) { schemaTOs.add(schemaTO); } switch (schemaType) { http://git-wip-us.apache.org/repos/asf/syncope/blob/47b9f64b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/schema/SchemaListAll.java ---------------------------------------------------------------------- diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/schema/SchemaListAll.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/schema/SchemaListAll.java index 5d00adb..57d95a1 100644 --- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/schema/SchemaListAll.java +++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/schema/SchemaListAll.java @@ -30,7 +30,7 @@ public class SchemaListAll extends AbstractSchemaCommand { try { for (final SchemaType schemaType : SchemaType.values()) { final LinkedList<AbstractSchemaTO> schemaTOs = new LinkedList<>(); - for (final AbstractSchemaTO schemaTO : schemaService.list(schemaType)) { + for (final AbstractSchemaTO schemaTO : schemaSyncopeOperations.list(schemaType)) { schemaTOs.add(schemaTO); } switch (schemaType) { http://git-wip-us.apache.org/repos/asf/syncope/blob/47b9f64b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/schema/SchemaListDerived.java ---------------------------------------------------------------------- diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/schema/SchemaListDerived.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/schema/SchemaListDerived.java index 8cdb501..ee90327 100644 --- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/schema/SchemaListDerived.java +++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/schema/SchemaListDerived.java @@ -22,14 +22,13 @@ import java.util.LinkedList; import javax.xml.ws.WebServiceException; import org.apache.syncope.common.lib.SyncopeClientException; import org.apache.syncope.common.lib.to.AbstractSchemaTO; -import org.apache.syncope.common.lib.types.SchemaType; public class SchemaListDerived extends AbstractSchemaCommand { public void listDerived() { try { final LinkedList<AbstractSchemaTO> schemaTOs = new LinkedList<>(); - for (final AbstractSchemaTO schemaTO : schemaService.list(SchemaType.DERIVED)) { + for (final AbstractSchemaTO schemaTO : schemaSyncopeOperations.listDerived()) { schemaTOs.add(schemaTO); } schemaResultManager.fromListDerived(schemaTOs); http://git-wip-us.apache.org/repos/asf/syncope/blob/47b9f64b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/schema/SchemaListPlain.java ---------------------------------------------------------------------- diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/schema/SchemaListPlain.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/schema/SchemaListPlain.java index e4160a7..6fa9ad6 100644 --- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/schema/SchemaListPlain.java +++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/schema/SchemaListPlain.java @@ -22,14 +22,13 @@ import java.util.LinkedList; import javax.xml.ws.WebServiceException; import org.apache.syncope.common.lib.SyncopeClientException; import org.apache.syncope.common.lib.to.AbstractSchemaTO; -import org.apache.syncope.common.lib.types.SchemaType; public class SchemaListPlain extends AbstractSchemaCommand { public void listPlain() { try { final LinkedList<AbstractSchemaTO> schemaTOs = new LinkedList<>(); - for (final AbstractSchemaTO schemaTO : schemaService.list(SchemaType.PLAIN)) { + for (final AbstractSchemaTO schemaTO : schemaSyncopeOperations.listPlain()) { schemaTOs.add(schemaTO); } schemaResultManager.fromListPlain(schemaTOs); http://git-wip-us.apache.org/repos/asf/syncope/blob/47b9f64b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/schema/SchemaListVirtual.java ---------------------------------------------------------------------- diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/schema/SchemaListVirtual.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/schema/SchemaListVirtual.java index 7b1bf24..74b5b6c 100644 --- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/schema/SchemaListVirtual.java +++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/schema/SchemaListVirtual.java @@ -22,14 +22,13 @@ import java.util.LinkedList; import javax.xml.ws.WebServiceException; import org.apache.syncope.common.lib.SyncopeClientException; import org.apache.syncope.common.lib.to.AbstractSchemaTO; -import org.apache.syncope.common.lib.types.SchemaType; public class SchemaListVirtual extends AbstractSchemaCommand { public void listVirtual() { try { final LinkedList<AbstractSchemaTO> schemaTOs = new LinkedList<>(); - for (final AbstractSchemaTO schemaTO : schemaService.list(SchemaType.VIRTUAL)) { + for (final AbstractSchemaTO schemaTO : schemaSyncopeOperations.listVirtual()) { schemaTOs.add(schemaTO); } schemaResultManager.fromListVirtual(schemaTOs); http://git-wip-us.apache.org/repos/asf/syncope/blob/47b9f64b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/schema/SchemaRead.java ---------------------------------------------------------------------- diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/schema/SchemaRead.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/schema/SchemaRead.java index 97f1029..d84444d 100644 --- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/schema/SchemaRead.java +++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/schema/SchemaRead.java @@ -45,7 +45,7 @@ public class SchemaRead extends AbstractSchemaCommand { final SchemaType schemaType = SchemaType.valueOf(input.firstParameter()); final LinkedList<AbstractSchemaTO> schemaTOs = new LinkedList<>(); for (final String parameter : parameters) { - schemaTOs.add(schemaService.read(schemaType, parameter)); + schemaTOs.add(schemaSyncopeOperations.read(schemaType, parameter)); } switch (schemaType) { case PLAIN: http://git-wip-us.apache.org/repos/asf/syncope/blob/47b9f64b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/schema/SchemaSyncopeOperations.java ---------------------------------------------------------------------- diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/schema/SchemaSyncopeOperations.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/schema/SchemaSyncopeOperations.java new file mode 100644 index 0000000..c8f0a6d --- /dev/null +++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/schema/SchemaSyncopeOperations.java @@ -0,0 +1,54 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.syncope.client.cli.commands.schema; + +import java.util.List; +import org.apache.syncope.client.cli.SyncopeServices; +import org.apache.syncope.common.lib.to.AbstractSchemaTO; +import org.apache.syncope.common.lib.types.SchemaType; +import org.apache.syncope.common.rest.api.service.SchemaService; + +public class SchemaSyncopeOperations { + + private final SchemaService schemaService = SyncopeServices.get(SchemaService.class); + + public <T extends AbstractSchemaTO> T read(final SchemaType schemaType, final String schemaName) { + return schemaService.read(schemaType, schemaName); + } + + public <T extends AbstractSchemaTO> List<T> list(final SchemaType schemaType) { + return schemaService.list(schemaType); + } + + public <T extends AbstractSchemaTO> List<T> listVirtual() { + return schemaService.list(SchemaType.VIRTUAL); + } + + public <T extends AbstractSchemaTO> List<T> listPlain() { + return schemaService.list(SchemaType.PLAIN); + } + + public <T extends AbstractSchemaTO> List<T> listDerived() { + return schemaService.list(SchemaType.DERIVED); + } + + public void delete(final SchemaType schemaType, final String schemaName) { + schemaService.delete(schemaType, schemaName); + } +} http://git-wip-us.apache.org/repos/asf/syncope/blob/47b9f64b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/AbstractTaskCommand.java ---------------------------------------------------------------------- diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/AbstractTaskCommand.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/AbstractTaskCommand.java index 18e877a..bdc4c22 100644 --- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/AbstractTaskCommand.java +++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/AbstractTaskCommand.java @@ -18,12 +18,9 @@ */ package org.apache.syncope.client.cli.commands.task; -import org.apache.syncope.client.cli.SyncopeServices; -import org.apache.syncope.common.rest.api.service.TaskService; - public abstract class AbstractTaskCommand { - protected final TaskService taskService = SyncopeServices.get(TaskService.class); + protected final TaskSyncopeOperations taskSyncopeOperations = new TaskSyncopeOperations(); protected final TaskResultManager taskResultManager = new TaskResultManager(); http://git-wip-us.apache.org/repos/asf/syncope/blob/47b9f64b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskDelete.java ---------------------------------------------------------------------- diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskDelete.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskDelete.java index 655e112..e0d4753 100644 --- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskDelete.java +++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskDelete.java @@ -37,7 +37,7 @@ public class TaskDelete extends AbstractTaskCommand { if (input.parameterNumber() >= 1) { for (final String parameter : input.getParameters()) { try { - taskService.delete(Long.valueOf(parameter)); + taskSyncopeOperations.delete(parameter); taskResultManager.deletedMessage("Task", parameter); } catch (final WebServiceException | SyncopeClientException ex) { if (ex.getMessage().startsWith("NotFound")) { http://git-wip-us.apache.org/repos/asf/syncope/blob/47b9f64b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskExecute.java ---------------------------------------------------------------------- diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskExecute.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskExecute.java index 9f53ece..dfefae3 100644 --- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskExecute.java +++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskExecute.java @@ -37,7 +37,6 @@ public class TaskExecute extends AbstractTaskCommand { public void execute() { if (input.parameterNumber() == 2) { try { - final Long taskIdToExecute = Long.valueOf(input.firstParameter()); boolean dryRun = true; if ("false".equalsIgnoreCase(input.secondParameter())) { dryRun = false; @@ -46,7 +45,8 @@ public class TaskExecute extends AbstractTaskCommand { } else { taskResultManager.notBooleanDeletedError("dry run", input.secondParameter()); } - taskResultManager.printTaskExecTO(Arrays.asList(taskService.execute(taskIdToExecute, dryRun))); + taskResultManager.printTaskExecTO(Arrays.asList( + taskSyncopeOperations.execute(input.firstParameter(), dryRun))); } catch (final WebServiceException | SyncopeClientException ex) { if (ex.getMessage().startsWith("NotFound")) { taskResultManager.notFoundError("Task", input.firstParameter()); http://git-wip-us.apache.org/repos/asf/syncope/blob/47b9f64b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskExecutionDelete.java ---------------------------------------------------------------------- diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskExecutionDelete.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskExecutionDelete.java index a107716..bb6d694 100644 --- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskExecutionDelete.java +++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskExecutionDelete.java @@ -37,7 +37,7 @@ public class TaskExecutionDelete extends AbstractTaskCommand { if (input.parameterNumber() >= 1) { for (final String parameter : input.getParameters()) { try { - taskService.deleteExecution(Long.valueOf(parameter)); + taskSyncopeOperations.deleteExecution(parameter); taskResultManager.deletedMessage("Task execution", parameter); } catch (final WebServiceException | SyncopeClientException ex) { if (ex.getMessage().startsWith("NotFound")) { http://git-wip-us.apache.org/repos/asf/syncope/blob/47b9f64b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskExecutionRead.java ---------------------------------------------------------------------- diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskExecutionRead.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskExecutionRead.java index d24641d..d83e2ef 100644 --- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskExecutionRead.java +++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskExecutionRead.java @@ -38,7 +38,7 @@ public class TaskExecutionRead extends AbstractTaskCommand { for (final String parameter : input.getParameters()) { try { taskResultManager.printTaskExecTO( - Arrays.asList(taskService.readExecution(Long.valueOf(parameter)))); + Arrays.asList(taskSyncopeOperations.readExecution(parameter))); } catch (final NumberFormatException ex) { taskResultManager.notBooleanDeletedError("task execution", parameter); } catch (final SyncopeClientException | WebServiceException ex) { http://git-wip-us.apache.org/repos/asf/syncope/blob/47b9f64b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskList.java ---------------------------------------------------------------------- diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskList.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskList.java index 203dbcb..b8c08e5 100644 --- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskList.java +++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskList.java @@ -42,7 +42,7 @@ public class TaskList extends AbstractTaskCommand { try { final TaskType taskType = TaskType.valueOf(input.firstParameter()); final LinkedList<AbstractTaskTO> taskTOs = new LinkedList<>(); - for (final AbstractTaskTO taskTO : taskService.list(taskType, new TaskQuery()).getResult()) { + for (final AbstractTaskTO taskTO : taskSyncopeOperations.list(taskType, new TaskQuery()).getResult()) { taskTOs.add(taskTO); } taskResultManager.fromList(taskType, taskTOs); http://git-wip-us.apache.org/repos/asf/syncope/blob/47b9f64b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskRead.java ---------------------------------------------------------------------- diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskRead.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskRead.java index 2538254..9e93d9e 100644 --- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskRead.java +++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskRead.java @@ -39,7 +39,7 @@ public class TaskRead extends AbstractTaskCommand { final LinkedList<AbstractTaskTO> taskTOs = new LinkedList<>(); for (final String parameter : input.getParameters()) { try { - taskTOs.add(taskService.read(Long.valueOf(parameter))); + taskTOs.add(taskSyncopeOperations.read(parameter)); } catch (final NumberFormatException ex) { taskResultManager.notBooleanDeletedError("task", parameter); } catch (final SyncopeClientException | WebServiceException ex) { http://git-wip-us.apache.org/repos/asf/syncope/blob/47b9f64b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskRunningJobs.java ---------------------------------------------------------------------- diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskRunningJobs.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskRunningJobs.java index fdb886f..d3a7e93 100644 --- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskRunningJobs.java +++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskRunningJobs.java @@ -19,13 +19,12 @@ package org.apache.syncope.client.cli.commands.task; import org.apache.syncope.common.lib.SyncopeClientException; -import org.apache.syncope.common.lib.types.JobStatusType; public class TaskRunningJobs extends AbstractTaskCommand { public void list() { try { - taskResultManager.printTaskExecTO(taskService.listJobs(JobStatusType.RUNNING)); + taskResultManager.printTaskExecTO(taskSyncopeOperations.listRunningJobs()); } catch (final SyncopeClientException ex) { taskResultManager.generic(ex.getMessage()); } http://git-wip-us.apache.org/repos/asf/syncope/blob/47b9f64b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskScheduledJobs.java ---------------------------------------------------------------------- diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskScheduledJobs.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskScheduledJobs.java index d95f122..c4798d5 100644 --- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskScheduledJobs.java +++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskScheduledJobs.java @@ -19,13 +19,12 @@ package org.apache.syncope.client.cli.commands.task; import org.apache.syncope.common.lib.SyncopeClientException; -import org.apache.syncope.common.lib.types.JobStatusType; public class TaskScheduledJobs extends AbstractTaskCommand { public void list() { try { - taskResultManager.printTaskExecTO(taskService.listJobs(JobStatusType.SCHEDULED)); + taskResultManager.printTaskExecTO(taskSyncopeOperations.listScheduledJobs()); } catch (final SyncopeClientException ex) { taskResultManager.generic(ex.getMessage()); } http://git-wip-us.apache.org/repos/asf/syncope/blob/47b9f64b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskSyncopeOperations.java ---------------------------------------------------------------------- diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskSyncopeOperations.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskSyncopeOperations.java new file mode 100644 index 0000000..6b819e9 --- /dev/null +++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskSyncopeOperations.java @@ -0,0 +1,66 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.syncope.client.cli.commands.task; + +import java.util.List; +import org.apache.syncope.client.cli.SyncopeServices; +import org.apache.syncope.common.lib.to.AbstractTaskTO; +import org.apache.syncope.common.lib.to.PagedResult; +import org.apache.syncope.common.lib.to.TaskExecTO; +import org.apache.syncope.common.lib.types.JobStatusType; +import org.apache.syncope.common.lib.types.TaskType; +import org.apache.syncope.common.rest.api.beans.TaskQuery; +import org.apache.syncope.common.rest.api.service.TaskService; + +public class TaskSyncopeOperations { + + private final TaskService taskService = SyncopeServices.get(TaskService.class); + + public List<TaskExecTO> listScheduledJobs() { + return taskService.listJobs(JobStatusType.SCHEDULED); + } + + public List<TaskExecTO> listRunningJobs() { + return taskService.listJobs(JobStatusType.RUNNING); + } + + public <T extends AbstractTaskTO> T read(final String taskId) { + return taskService.read(Long.valueOf(taskId)); + } + + public void delete(final String taskId) { + taskService.read(Long.valueOf(taskId)); + } + + public <T extends AbstractTaskTO> PagedResult<T> list(final TaskType type, final TaskQuery query) { + return taskService.list(type, query); + } + + public TaskExecTO readExecution(final String executionId) { + return taskService.readExecution(Long.valueOf(executionId)); + } + + public void deleteExecution(final String executionId) { + taskService.deleteExecution(Long.valueOf(executionId)); + } + + public TaskExecTO execute(final String executionId, final boolean dryRun) { + return taskService.execute(Long.valueOf(executionId), dryRun); + } +} http://git-wip-us.apache.org/repos/asf/syncope/blob/47b9f64b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/AbstractUserCommand.java ---------------------------------------------------------------------- diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/AbstractUserCommand.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/AbstractUserCommand.java new file mode 100644 index 0000000..5a28a04 --- /dev/null +++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/AbstractUserCommand.java @@ -0,0 +1,27 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.syncope.client.cli.commands.user; + +public abstract class AbstractUserCommand { + + protected final UserSyncopeOperations userSyncopeOperations = new UserSyncopeOperations(); + + protected final UserResultManager userResultManager = new UserResultManager(); + +} http://git-wip-us.apache.org/repos/asf/syncope/blob/47b9f64b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserCommand.java ---------------------------------------------------------------------- diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserCommand.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserCommand.java new file mode 100644 index 0000000..35c3941 --- /dev/null +++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserCommand.java @@ -0,0 +1,144 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.syncope.client.cli.commands.user; + +import java.util.ArrayList; +import java.util.List; +import org.apache.commons.lang3.StringUtils; +import org.apache.syncope.client.cli.Command; +import org.apache.syncope.client.cli.Input; +import org.apache.syncope.client.cli.commands.AbstractCommand; + +@Command(name = "user") +public class UserCommand extends AbstractCommand { + + private static final String HELP_MESSAGE = "Usage: user [options]\n" + + " Options:\n" + + " --help \n" + + " --list \n" + + " --count \n" + + " --get-user-key\n" + + " Syntax: --get-user-key {USER-ID} {USER-ID} [...]\n" + + " --get-username\n" + + " Syntax: --get-username {USERNAME} {USERNAME} [...]\n" + + " --read \n" + + " Syntax: --read {USER-ID} {USER-ID} [...]\n" + + " --search-by-attribute \n" + + " Syntax: --search-by-attribute {REALM} {ATTR-NAME}={ATTR-VALUE}\n" + + " --search-by-role \n" + + " Syntax: --search-by-role {REALM} {ROLE-ID}\n" + + " --search-by-resource \n" + + " Syntax: --search-by-resource {REALM} {RESOURCE-NAME}\n" + + " --delete \n" + + " Syntax: --delete {USER-ID} {USER-ID} [...]"; + + @Override + public void execute(final Input input) { + if (StringUtils.isBlank(input.getOption())) { + input.setOption(UserOptions.HELP.getOptionName()); + } + + switch (UserOptions.fromName(input.getOption())) { + case COUNT: + new UserCount(input).count(); + break; + case LIST: + new UserList().list(); + break; + case GET_BY_KEY: + new UserGetKey(input).get(); + break; + case GET_BY_USERNAME: + new UserGetUsername(input).get(); + break; + case READ: + new UserRead(input).read(); + break; + case SEARCH_BY_ATTRIBUTE: + new UserSearchByAttribute(input).search(); + break; + case SEARCH_BY_ROLE: + new UserSearchByRole(input).search(); + break; + case SEARCH_BY_RESOURCE: + new UserSearchByResource(input).search(); + break; + case DELETE: + new UserDelete(input).delete(); + break; + case HELP: + System.out.println(HELP_MESSAGE); + break; + default: + new UserResultManager().defaultError(input.getOption(), HELP_MESSAGE); + } + } + + @Override + public String getHelpMessage() { + return HELP_MESSAGE; + } + + private enum UserOptions { + + HELP("--help"), + COUNT("--count"), + LIST("--list"), + GET_BY_KEY("--get-user-key"), + GET_BY_USERNAME("--get-username"), + READ("--read"), + SEARCH_BY_ATTRIBUTE("--search-by-attribute"), + SEARCH_BY_ROLE("--search-by-role"), + SEARCH_BY_RESOURCE("--search-by-resource"), + DELETE("--delete"); + + private final String optionName; + + UserOptions(final String optionName) { + this.optionName = optionName; + } + + public String getOptionName() { + return optionName; + } + + public boolean equalsOptionName(final String otherName) { + return (otherName == null) ? false : optionName.equals(otherName); + } + + public static UserOptions fromName(final String name) { + UserOptions optionToReturn = HELP; + for (final UserOptions option : UserOptions.values()) { + if (option.equalsOptionName(name)) { + optionToReturn = option; + } + } + return optionToReturn; + } + + public static List<String> toList() { + final List<String> options = new ArrayList<>(); + for (final UserOptions value : values()) { + options.add(value.getOptionName()); + } + return options; + } + } + +} http://git-wip-us.apache.org/repos/asf/syncope/blob/47b9f64b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserCount.java ---------------------------------------------------------------------- diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserCount.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserCount.java new file mode 100644 index 0000000..a9cff9e --- /dev/null +++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserCount.java @@ -0,0 +1,43 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.syncope.client.cli.commands.user; + +import org.apache.syncope.client.cli.Input; +import org.apache.syncope.common.lib.SyncopeClientException; + +public class UserCount extends AbstractUserCommand { + + private final Input input; + + public UserCount(final Input input) { + this.input = input; + } + + public void count() { + if (input.parameterNumber() == 0) { + try { + userResultManager.generic("Total users: " + userSyncopeOperations.count()); + } catch (final SyncopeClientException ex) { + userResultManager.generic("Error: " + ex.getMessage()); + } + } else { + userResultManager.generic("Error: unnecessary parameters " + input.listParameters()); + } + } +} http://git-wip-us.apache.org/repos/asf/syncope/blob/47b9f64b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserDelete.java ---------------------------------------------------------------------- diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserDelete.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserDelete.java new file mode 100644 index 0000000..817db6c --- /dev/null +++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserDelete.java @@ -0,0 +1,55 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.syncope.client.cli.commands.user; + +import javax.xml.ws.WebServiceException; +import org.apache.syncope.client.cli.Input; +import org.apache.syncope.common.lib.SyncopeClientException; + +public class UserDelete extends AbstractUserCommand { + + private static final String DELETE_HELP_MESSAGE = "user --delete {USER-ID} {USER-ID} [...]"; + + private final Input input; + + public UserDelete(final Input input) { + this.input = input; + } + + public void delete() { + if (input.parameterNumber() >= 1) { + for (final String parameter : input.getParameters()) { + try { + userSyncopeOperations.delete(parameter); + userResultManager.deletedMessage("User", parameter); + } catch (final WebServiceException | SyncopeClientException ex) { + if (ex.getMessage().startsWith("NotFound")) { + userResultManager.notFoundError("User", parameter); + } else { + userResultManager.generic(ex.getMessage()); + } + } catch (final NumberFormatException ex) { + userResultManager.numberFormatException("user", parameter); + } + } + } else { + userResultManager.commandOptionError(DELETE_HELP_MESSAGE); + } + } +} http://git-wip-us.apache.org/repos/asf/syncope/blob/47b9f64b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserGetKey.java ---------------------------------------------------------------------- diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserGetKey.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserGetKey.java new file mode 100644 index 0000000..d64a327 --- /dev/null +++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserGetKey.java @@ -0,0 +1,45 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.syncope.client.cli.commands.user; + +import org.apache.syncope.client.cli.Input; +import org.apache.syncope.common.lib.SyncopeClientException; + +public class UserGetKey extends AbstractUserCommand { + + private static final String GET_HELP_MESSAGE = "user --get-user-key {USERNAME}"; + + private final Input input; + + public UserGetKey(final Input input) { + this.input = input; + } + + public void get() { + if (input.getParameters().length == 1) { + try { + userResultManager.generic(userSyncopeOperations.getIdFromUsername(input.firstParameter())); + } catch (final SyncopeClientException ex) { + userResultManager.generic("Error: " + ex.getMessage()); + } + } else { + userResultManager.commandOptionError(GET_HELP_MESSAGE); + } + } +} http://git-wip-us.apache.org/repos/asf/syncope/blob/47b9f64b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserGetUsername.java ---------------------------------------------------------------------- diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserGetUsername.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserGetUsername.java new file mode 100644 index 0000000..a94b1df --- /dev/null +++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserGetUsername.java @@ -0,0 +1,45 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.syncope.client.cli.commands.user; + +import org.apache.syncope.client.cli.Input; +import org.apache.syncope.common.lib.SyncopeClientException; + +public class UserGetUsername extends AbstractUserCommand { + + private static final String GET_HELP_MESSAGE = "user --get-username {USER-ID}"; + + private final Input input; + + public UserGetUsername(final Input input) { + this.input = input; + } + + public void get() { + if (input.getParameters().length == 1) { + try { + userResultManager.generic(userSyncopeOperations.getUsernameFromId(input.firstParameter())); + } catch (final SyncopeClientException ex) { + userResultManager.generic("Error: " + ex.getMessage()); + } + } else { + userResultManager.commandOptionError(GET_HELP_MESSAGE); + } + } +} http://git-wip-us.apache.org/repos/asf/syncope/blob/47b9f64b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserList.java ---------------------------------------------------------------------- diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserList.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserList.java new file mode 100644 index 0000000..4778cd2 --- /dev/null +++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserList.java @@ -0,0 +1,48 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.syncope.client.cli.commands.user; + +import java.util.LinkedList; +import java.util.Scanner; +import org.apache.syncope.common.lib.SyncopeClientException; +import org.apache.syncope.common.lib.to.PagedResult; +import org.apache.syncope.common.lib.to.UserTO; + +public class UserList extends AbstractUserCommand { + + public void list() { + try { + final Scanner scanIn = new Scanner(System.in); + System.out.println( + "This operation could be print a lot of information " + + "on your screen. Do you want to continue? [yes/no]"); + final String answer = scanIn.nextLine(); + if ("yes".equalsIgnoreCase(answer)) { + final PagedResult<UserTO> uResult = userSyncopeOperations.list(); + userResultManager.toView(new LinkedList<>(uResult.getResult())); + } else if ("no".equalsIgnoreCase(answer)) { + userResultManager.generic("List operation skipped"); + } else { + userResultManager.generic("Invalid parameter, please use [yes/no]"); + } + } catch (final SyncopeClientException ex) { + userResultManager.generic(ex.getMessage()); + } + } +} http://git-wip-us.apache.org/repos/asf/syncope/blob/47b9f64b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserRead.java ---------------------------------------------------------------------- diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserRead.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserRead.java new file mode 100644 index 0000000..ae94409 --- /dev/null +++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserRead.java @@ -0,0 +1,60 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.syncope.client.cli.commands.user; + +import java.util.LinkedList; +import javax.xml.ws.WebServiceException; +import org.apache.syncope.client.cli.Input; +import org.apache.syncope.common.lib.SyncopeClientException; +import org.apache.syncope.common.lib.to.UserTO; + +public class UserRead extends AbstractUserCommand { + + private static final String READ_HELP_MESSAGE = "user --read {USER-ID} {USER-ID} [...]"; + + private final Input input; + + public UserRead(final Input input) { + this.input = input; + } + + public void read() { + if (input.getParameters().length >= 1) { + final LinkedList<UserTO> userTOs = new LinkedList<>(); + for (final String parameter : input.getParameters()) { + try { + userTOs.add(userSyncopeOperations.read(parameter)); + } catch (final SyncopeClientException | WebServiceException ex) { + if (ex.getMessage().startsWith("NotFound")) { + userResultManager.notFoundError("Logger", parameter); + } else { + userResultManager.generic("Error: " + ex.getMessage()); + } + break; + } catch (final NumberFormatException ex) { + userResultManager.numberFormatException("user", parameter); + } + } + userResultManager.toView(userTOs); + } else { + userResultManager.commandOptionError(READ_HELP_MESSAGE); + } + } + +} http://git-wip-us.apache.org/repos/asf/syncope/blob/47b9f64b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserResultManager.java ---------------------------------------------------------------------- diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserResultManager.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserResultManager.java new file mode 100644 index 0000000..2ea0578 --- /dev/null +++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserResultManager.java @@ -0,0 +1,110 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.syncope.client.cli.commands.user; + +import java.util.List; +import java.util.Set; +import org.apache.syncope.client.cli.commands.CommonsResultManager; +import org.apache.syncope.common.lib.to.AttrTO; +import org.apache.syncope.common.lib.to.PropagationStatus; +import org.apache.syncope.common.lib.to.RelationshipTO; +import org.apache.syncope.common.lib.to.UserTO; + +public class UserResultManager extends CommonsResultManager { + + public void toView(final List<UserTO> userTOs) { + for (final UserTO userTO : userTOs) { + printUser(userTO); + } + System.out.println(""); + } + + private void printUser(final UserTO userTO) { + System.out.println(" > USER ID: " + userTO.getKey()); + System.out.println(" username: " + userTO.getUsername()); + System.out.println(" realm: " + userTO.getRealm()); + System.out.println(" status: " + userTO.getStatus()); + System.out.println(" RESOURCES: "); + printResource(userTO.getResources()); + System.out.println(" ROLES: "); + printRole(userTO.getRoles()); + System.out.println(" creation date: " + userTO.getCreationDate()); + System.out.println(" change password date: " + userTO.getChangePwdDate()); + System.out.println(" PLAIN ATTRIBUTES: "); + printAttributes(userTO.getPlainAttrs()); + System.out.println(" DERIVED ATTRIBUTES: "); + printAttributes(userTO.getDerAttrs()); + System.out.println(" VIRTUAL ATTRIBUTES: "); + printAttributes(userTO.getVirAttrs()); + System.out.println(" creator: " + userTO.getCreator()); + System.out.println(" last modifier: " + userTO.getLastModifier()); + System.out.println(" token: " + userTO.getToken()); + System.out.println(" token expiration time: " + userTO.getTokenExpireTime()); + System.out.println(" last change: " + userTO.getLastChangeDate()); + System.out.println(" last login: " + userTO.getLastLoginDate()); + System.out.println(" failed logins: " + userTO.getFailedLogins()); + System.out.println("PROPAGATIONS:"); + printPropagationStatus(userTO.getPropagationStatusTOs()); + System.out.println("RELATIONSHIPS:"); + printRelationships(userTO.getRelationships()); + System.out.println(" security question id: " + userTO.getSecurityQuestion()); + System.out.println(" security question answer id: " + userTO.getSecurityAnswer()); + System.out.println(""); + } + + private void printResource(final Set<String> resources) { + for (final String resource : resources) { + System.out.println(" - " + resource); + } + } + + private void printRole(final List<Long> roles) { + for (final Long role : roles) { + System.out.println(" - " + role); + } + } + + private void printAttributes(final Set<AttrTO> derAttrTOs) { + for (final AttrTO attrTO : derAttrTOs) { + final StringBuilder attributeSentence = new StringBuilder(); + attributeSentence.append(" ") + .append(attrTO.getSchema()) + .append(": ") + .append(attrTO.getValues()); + if (attrTO.isReadonly()) { + attributeSentence.append(" - is readonly."); + } + System.out.println(attributeSentence); + } + } + + private void printPropagationStatus(final List<PropagationStatus> propagationStatuses) { + for (final PropagationStatus propagationStatus : propagationStatuses) { + System.out.println(" status: " + propagationStatus.getStatus()); + System.out.println(" resource: " + propagationStatus.getResource()); + System.out.println(" failure reason: " + propagationStatus.getFailureReason()); + } + } + + private void printRelationships(final List<RelationshipTO> relationshipTOs) { + for (final RelationshipTO relationshipTO : relationshipTOs) { + System.out.println(" type: " + relationshipTO.getType()); + } + } +} http://git-wip-us.apache.org/repos/asf/syncope/blob/47b9f64b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserSearchByAttribute.java ---------------------------------------------------------------------- diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserSearchByAttribute.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserSearchByAttribute.java new file mode 100644 index 0000000..18ac77e --- /dev/null +++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserSearchByAttribute.java @@ -0,0 +1,69 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.syncope.client.cli.commands.user; + +import java.util.List; +import javax.xml.ws.WebServiceException; +import org.apache.syncope.client.cli.Input; +import org.apache.syncope.client.cli.commands.realm.RealmSyncopeOperations; +import org.apache.syncope.common.lib.SyncopeClientException; +import org.apache.syncope.common.lib.to.UserTO; + +public class UserSearchByAttribute extends AbstractUserCommand { + + private static final String SEARCH_HELP_MESSAGE = "user --search-by-attribute {REALM} {ATTR-NAME}={ATTR-VALUE}"; + + private final Input input; + + public UserSearchByAttribute(final Input input) { + this.input = input; + } + + public void search() { + if (input.parameterNumber() >= 2) { + final String realm = input.firstParameter(); + final Input.PairParameter pairParameter = input.toPairParameter(input.secondParameter()); + final RealmSyncopeOperations realmSyncopeOperations = new RealmSyncopeOperations(); + try { + List<UserTO> userTOs; + if (!realmSyncopeOperations.exists(realm)) { + userResultManager.generic("Operation performed on root realm because " + realm + "does not exists"); + } + userTOs = userSyncopeOperations.searchByAttribute( + realm, pairParameter.getKey(), pairParameter.getValue()); + if (userTOs == null || userTOs.isEmpty()) { + userResultManager.generic("No users found with attribute " + + pairParameter.getKey() + " and value " + pairParameter.getValue()); + } else { + userResultManager.toView(userTOs); + } + } catch (final WebServiceException | SyncopeClientException ex) { + if (ex.getMessage().startsWith("NotFound")) { + userResultManager.notFoundError("User with " + pairParameter.getKey(), pairParameter.getValue()); + } else { + userResultManager.generic(ex.getMessage(), SEARCH_HELP_MESSAGE); + } + } catch (final IllegalArgumentException ex) { + userResultManager.generic(ex.getMessage(), SEARCH_HELP_MESSAGE); + } + userResultManager.commandOptionError(SEARCH_HELP_MESSAGE); + } + } + +} http://git-wip-us.apache.org/repos/asf/syncope/blob/47b9f64b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserSearchByResource.java ---------------------------------------------------------------------- diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserSearchByResource.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserSearchByResource.java new file mode 100644 index 0000000..6a22150 --- /dev/null +++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserSearchByResource.java @@ -0,0 +1,68 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.syncope.client.cli.commands.user; + +import java.util.List; +import javax.xml.ws.WebServiceException; +import org.apache.syncope.client.cli.Input; +import org.apache.syncope.client.cli.commands.realm.RealmSyncopeOperations; +import org.apache.syncope.client.cli.commands.resource.ResourceSyncopeOperations; +import org.apache.syncope.common.lib.SyncopeClientException; +import org.apache.syncope.common.lib.to.UserTO; + +public class UserSearchByResource extends AbstractUserCommand { + + private static final String SEARCH_HELP_MESSAGE = "user --search {REALM} {RESOURCE-NAME}"; + + private final Input input; + + public UserSearchByResource(final Input input) { + this.input = input; + } + + public void search() { + if (input.parameterNumber() == 2) { + final String realm = input.firstParameter(); + final String resource = input.secondParameter(); + final RealmSyncopeOperations realmSyncopeOperations = new RealmSyncopeOperations(); + final ResourceSyncopeOperations resourceSyncopeOperations = new ResourceSyncopeOperations(); + try { + List<UserTO> userTOs = null; + if (!realmSyncopeOperations.exists(realm)) { + userResultManager.generic("Operation performed on root realm because " + realm + "does not exists"); + } + if (!resourceSyncopeOperations.exists(resource)) { + userResultManager.notFoundError("Resource", resource); + } else { + userTOs = userSyncopeOperations.searchByResource(realm, resource); + } + if (userTOs == null || userTOs.isEmpty()) { + userResultManager.generic("No users has " + resource + " assigned"); + } else { + userResultManager.toView(userTOs); + } + } catch (final WebServiceException | SyncopeClientException ex) { + userResultManager.generic(ex.getMessage(), SEARCH_HELP_MESSAGE); + } + } else { + userResultManager.commandOptionError(SEARCH_HELP_MESSAGE); + } + } + +} http://git-wip-us.apache.org/repos/asf/syncope/blob/47b9f64b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserSearchByRole.java ---------------------------------------------------------------------- diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserSearchByRole.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserSearchByRole.java new file mode 100644 index 0000000..789bacb --- /dev/null +++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserSearchByRole.java @@ -0,0 +1,62 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.syncope.client.cli.commands.user; + +import java.util.List; +import javax.xml.ws.WebServiceException; +import org.apache.syncope.client.cli.Input; +import org.apache.syncope.client.cli.commands.realm.RealmSyncopeOperations; +import org.apache.syncope.common.lib.SyncopeClientException; +import org.apache.syncope.common.lib.to.UserTO; + +public class UserSearchByRole extends AbstractUserCommand { + + private static final String SEARCH_HELP_MESSAGE = "user --search {REALM} {ROLE-ID}"; + + private final Input input; + + public UserSearchByRole(final Input input) { + this.input = input; + } + + public void search() { + if (input.parameterNumber() == 2) { + final String realm = input.firstParameter(); + final String role = input.secondParameter(); + final RealmSyncopeOperations realmSyncopeOperations = new RealmSyncopeOperations(); + try { + List<UserTO> userTOs; + if (!realmSyncopeOperations.exists(realm)) { + userResultManager.generic("Operation performed on root realm because " + realm + "does not exists"); + } + userTOs = userSyncopeOperations.searchByRole(realm, input.secondParameter()); + if (userTOs == null || userTOs.isEmpty()) { + userResultManager.generic("No users has " + role + " assigned"); + } else { + userResultManager.toView(userTOs); + } + } catch (final WebServiceException | SyncopeClientException ex) { + userResultManager.generic(ex.getMessage(), SEARCH_HELP_MESSAGE); + } + } else { + userResultManager.commandOptionError(SEARCH_HELP_MESSAGE); + } + } + +} http://git-wip-us.apache.org/repos/asf/syncope/blob/47b9f64b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserSyncopeOperations.java ---------------------------------------------------------------------- diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserSyncopeOperations.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserSyncopeOperations.java new file mode 100644 index 0000000..0496d97 --- /dev/null +++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserSyncopeOperations.java @@ -0,0 +1,78 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.syncope.client.cli.commands.user; + +import java.util.List; +import org.apache.syncope.client.cli.SyncopeServices; +import org.apache.syncope.client.lib.SyncopeClient; +import org.apache.syncope.common.lib.to.PagedResult; +import org.apache.syncope.common.lib.to.UserTO; +import org.apache.syncope.common.rest.api.RESTHeaders; +import org.apache.syncope.common.rest.api.beans.AnyListQuery; +import org.apache.syncope.common.rest.api.service.UserService; + +public class UserSyncopeOperations { + + private final UserService userService = SyncopeServices.get(UserService.class); + + public List<UserTO> searchByRole(final String realm, final String role) { + return userService.search( + SyncopeClient.getAnySearchQueryBuilder().realm(realm). + fiql(SyncopeClient.getUserSearchConditionBuilder().inRoles(Long.valueOf(role)) + .query()).build()).getResult(); + } + + public List<UserTO> searchByResource(final String realm, final String resource) { + return userService.search( + SyncopeClient.getAnySearchQueryBuilder().realm(realm). + fiql(SyncopeClient.getUserSearchConditionBuilder().hasResources(resource) + .query()).build()).getResult(); + } + + public List<UserTO> searchByAttribute(final String realm, final String attributeName, final String attributeValue) { + return userService.search( + SyncopeClient.getAnySearchQueryBuilder().realm(realm). + fiql(SyncopeClient.getUserSearchConditionBuilder().is(attributeName).equalTo(attributeValue) + .query()).build()).getResult(); + } + + public PagedResult<UserTO> list() { + return userService.list(new AnyListQuery()); + } + + public UserTO read(final String userId) { + return userService.read(Long.valueOf(userId)); + } + + public void delete(final String userId) { + userService.delete(Long.valueOf(userId)); + } + + public int count() { + return list().getResult().size(); + } + + public String getUsernameFromId(final String userId) { + return userService.getUsername(Long.valueOf(userId)).getHeaderString(RESTHeaders.USERNAME); + } + + public String getIdFromUsername(final String username) { + return userService.getUserKey(username).getHeaderString(RESTHeaders.USER_KEY); + } +}