public Charset getCharset() { BaseOptions base = NinjaUtils.getOptions(jc, BaseOptions.class); String charset = base.getCharset(); return Charset.forName(charset); }
public static ObjectFilter createObjectFilter(FileReference strFilter, NinjaContext context, Class<? extends ObjectType> objectClass) throws IOException, SchemaException { ObjectQuery query = createObjectQuery(strFilter, context, objectClass); return query != null ? query.getFilter() : null; }
public <T extends ObjectType> void delete(QName type, String oid, List<String> options) { Validate.notNull(type, "Object type must not be null"); Validate.notNull(oid, "Oid must not be null"); if (options == null) { options = new ArrayList<>(); } ObjectTypes object = ObjectTypes.getObjectTypeFromTypeQName(type); ResponseEntity<String> resp = template.execute(url + "/{type}/{oid}", HttpMethod.DELETE, null, null, object.getRestType(), oid); if (!resp.getStatusCode().is2xxSuccessful()) { OperationResult result = NinjaUtils.parseResult(resp.getBody()); throw new RestServiceException("Couldn't delete object '" + type.getLocalPart() + "', with oid: '" + oid + "'", result); } }
protected NinjaContext setupNinjaContext(String[] input) { JCommander jc = NinjaUtils.setupCommandLineParser(); jc.parse(input); NinjaContext context = new NinjaContext(jc); ConnectionOptions connection = NinjaUtils.getOptions(jc, ConnectionOptions.class); context.init(connection); return context; }
private List<SearchProducerWorker> createProducers(BlockingQueue<PrismObject> queue, OperationStatus operation) throws SchemaException, IOException { QueryFactory queryFactory = context.getPrismContext().queryFactory(); List<SearchProducerWorker> producers = new ArrayList<>(); if (options.getOid() != null) { Set<ObjectTypes> types = options.getType(); ObjectTypes type = types.isEmpty() ? ObjectTypes.OBJECT : types.iterator().next(); InOidFilter filter = queryFactory.createInOid(options.getOid()); ObjectQuery query = queryFactory.createQuery(filter); producers.add(new SearchProducerWorker(context, options, queue, operation, producers, type, query)); return producers; } List<ObjectTypes> types = NinjaUtils.getTypes(options.getType()); for (ObjectTypes type : types) { ObjectFilter filter = NinjaUtils.createObjectFilter(options.getFilter(), context, type.getClassDefinition()); ObjectQuery query = queryFactory.createQuery(filter); if (ObjectTypes.SHADOW.equals(type)) { List<SearchProducerWorker> shadowProducers = createProducersForShadows(context, queue, operation, producers, filter); producers.addAll(shadowProducers); continue; } producers.add(new SearchProducerWorker(context, options, queue, operation, producers, type, query)); } return producers; }
@Override public void execute() throws Exception { RepositoryService repository = context.getRepository(); FileReference fileReference = options.getFilter(); if (fileReference != null && options.getFilter() == null) { throw new NinjaException("Type must be defined"); } List<ObjectTypes> types = NinjaUtils.getTypes(options.getType()); int total = 0; OperationResult result = new OperationResult(OPERATION_COUNT); for (ObjectTypes type : types) { ObjectQuery query = NinjaUtils.createObjectQuery(options.getFilter(), context, type.getClassDefinition()); int count = repository.countObjects(type.getClassDefinition(), query, new ArrayList<>(), result); if (count == 0 && options.getType() == null) { continue; } log.info("{}:\t{}", type.name(), count); total += count; } log.info("===\nTotal:\t{}", total); } }
private void handleException(BaseOptions opts, Exception ex) { if (!opts.isSilent()) { System.err.println("Unexpected exception occurred (" + ex.getClass() + "), reason: " + ex.getMessage()); } if (opts.isVerbose()) { String stack = NinjaUtils.printStackToString(ex); System.err.print("Exception stack trace:\n" + stack); } }
private Writer createWriter() throws IOException { Writer writer = NinjaUtils.createWriter(options.getOutput(), context.getCharset(), options.isZip()); String prolog = getProlog(); if (prolog != null) { writer.write(prolog); } return writer; }
@Override public void execute() throws Exception { OperationResult result = new OperationResult(OPERATION_IMPORT); OperationStatus progress = new OperationStatus(context, result); BlockingQueue<PrismObject> queue = new LinkedBlockingQueue<>(QUEUE_CAPACITY_PER_THREAD * options.getMultiThread()); // "+ 2" will be used for producer and progress reporter ExecutorService executor = Executors.newFixedThreadPool(options.getMultiThread() + 2); ImportProducerWorker producer; if (options.getOid() != null) { InOidFilter filter = context.getPrismContext().queryFactory().createInOid(options.getOid()); producer = importByFilter(filter, true, queue, progress); } else { ObjectFilter filter = NinjaUtils.createObjectFilter(options.getFilter(), context, ObjectType.class); // todo ok? (ObjectType) producer = importByFilter(filter, false, queue, progress); } executor.execute(producer); Thread.sleep(CONSUMERS_WAIT_FOR_START); executor.execute(new ProgressReporterWorker(context, options, queue, progress)); List<ImportConsumerWorker> consumers = createConsumers(queue, progress); consumers.stream().forEach(c -> executor.execute(c)); executor.shutdown(); executor.awaitTermination(NinjaUtils.WAIT_FOR_EXECUTOR_FINISH, TimeUnit.DAYS); handleResultOnFinish(progress, "Import finished"); }
optionsBuilder = NinjaUtils.addIncludeOptionsForExport(optionsBuilder, type.getClassDefinition());
@Test public void setupRepositoryViaMidpointHome() throws Exception { JCommander jc = NinjaUtils.setupCommandLineParser(); jc.parse("-m", "./target/midpoint-home", "-U", "jdbc:postgresql://localhost/midpoint", "-u", "midpoint", "-p", "qwe123"); ConnectionOptions options = NinjaUtils.getOptions(jc, ConnectionOptions.class); NinjaContext ctx = new NinjaContext(null); ctx.init(options); RepositoryService service = ctx.getRepository(); OperationResult result = new OperationResult("get user"); PrismObject obj = service.getObject(UserType.class, SystemObjectsType.USER_ADMINISTRATOR.value(), null, result); System.out.println(obj.debugDump()); } }
private void cleanupResources(BaseOptions opts, NinjaContext context) { try { if (context != null) { context.destroy(); } } catch (Exception ex) { if (opts.isVerbose()) { String stack = NinjaUtils.printStackToString(ex); System.err.print("Unexpected exception occurred (" + ex.getClass() + ") during destroying context. Exception stack trace:\n" + stack); } } }
protected void run(String[] args) { JCommander jc = NinjaUtils.setupCommandLineParser(); BaseOptions base = NinjaUtils.getOptions(jc, BaseOptions.class); ConnectionOptions connection = NinjaUtils.getOptions(jc, ConnectionOptions.class); Action action; if (connection.isUseWebservice()) {
public boolean isVerbose() { BaseOptions base = NinjaUtils.getOptions(jc, BaseOptions.class); return base.isVerbose(); }
@Override public void execute() throws Exception { String oid = options.getOid(); if (oid != null) { deleteByOid(); } else { ObjectQuery query = NinjaUtils.createObjectQuery(options.getFilter(), context, ObjectType.class); deleteByFilter(query); } }
public void init(NinjaContext context, T options) { this.context = context; this.options = options; LogTarget target = getInfoLogTarget(); log = new Log(target, this.context); this.context.setLog(log); ConnectionOptions connection = NinjaUtils.getOptions(this.context.getJc(), ConnectionOptions.class); this.context.init(connection); }
private void init() { opts = NinjaUtils.getOptions(context.getJc(), BaseOptions.class); LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory(); PatternLayoutEncoder ple = new PatternLayoutEncoder(); if (opts.isVerbose()) { ple.setPattern("%date [%thread] %-5level \\(%logger{46}\\): %message%n<"); } else { ple.setPattern("%msg%n"); } ple.setContext(lc); ple.start(); ConsoleAppender out = setupAppender("STDOUT","System.out", lc, setupEncoder(lc)); ConsoleAppender err = setupAppender("STDERR","System.err", lc, setupEncoder(lc)); Logger root = (Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME); if (LogTarget.SYSTEM_OUT.equals(target)) { root.addAppender(out); } else { root.addAppender(err); } root.setLevel(Level.OFF); info = setupLogger(LOGGER_SYS_OUT, opts); error = setupLogger(LOGGER_SYS_ERR, opts); error.setAdditive(false); error.addAppender(err); }