org.entcore.feeder.aaf.PersonnelImportProcessing2.java Source code

Java tutorial

Introduction

Here is the source code for org.entcore.feeder.aaf.PersonnelImportProcessing2.java

Source

/* Copyright  "Open Digital Education", 2014
 *
 * This program is published by "Open Digital Education".
 * You must indicate the name of the software and the company in any production /contribution
 * using the software and indicate on the home page of the software industry in question,
 * "powered by Open Digital Education" with a reference to the website: https://opendigitaleducation.com/.
 *
 * This program is free software, licensed under the terms of the GNU Affero General Public License
 * as published by the Free Software Foundation, version 3 of the License.
 *
 * You can redistribute this application and/or modify it since you respect the terms of the GNU Affero General Public License.
 * If you modify the source code and then use this modified source code in your creation, you must make available the source code of your modifications.
 *
 * You should have received a copy of the GNU Affero General Public License along with the software.
 * If not, please see : <http://www.gnu.org/licenses/>. Full compliance requires reading the terms of this license and following its directives.
    
 *
 */

package org.entcore.feeder.aaf;

import io.vertx.core.Handler;
import io.vertx.core.Vertx;
import io.vertx.core.eventbus.Message;
import io.vertx.core.json.JsonArray;
import io.vertx.core.json.JsonObject;

import java.util.*;

public class PersonnelImportProcessing2 extends PersonnelImportProcessing {

    protected PersonnelImportProcessing2(String path, Vertx vertx) {
        super(path, vertx);
    }

    @Override
    protected void preCommit() {
        importer.getPersEducNat().createAndLinkSubjects();
    }

    @Override
    public void start(final Handler<Message<JsonObject>> handler) {
        if (importer.isFirstImport()) {
            parse(handler, new StudentImportProcessing2(path, vertx));
        } else {
            initAcademyPrefix(path);
            importer.markMissingUsers(null, getAcademyPrefix(), new Handler<Void>() {
                @Override
                public void handle(Void event) {
                    parse(handler, new StudentImportProcessing2(path, vertx));
                }
            });
        }
    }

    @Override
    public void process(JsonObject object) {
        List<String> c = object.getJsonArray("classes") != null ? object.getJsonArray("classes").getList()
                : new LinkedList<String>();
        final List<String[]> groups = new ArrayList<>();
        createGroups(object.getJsonArray("groups"), c, groups);
        String[][] classes = createClasses(new fr.wseduc.webutils.collections.JsonArray(c));
        JsonArray functions = object.getJsonArray("functions");
        JsonArray structuresByFunctions = null;
        if (functions != null) {
            Set<String> s = new HashSet<>();
            for (Object o : functions) {
                if (!(o instanceof String) || !o.toString().contains("$"))
                    continue;
                s.add(o.toString().substring(0, o.toString().indexOf('$')));
            }
            structuresByFunctions = new fr.wseduc.webutils.collections.JsonArray(new ArrayList<>(s));
        }
        createFunctionGroups(object.getJsonArray("functions"), groups);
        createHeadTeacherGroups(object.getJsonArray("headTeacher"), groups);
        importer.createOrUpdatePersonnel(object, detectProfile(object), structuresByFunctions, classes,
                groups.toArray(new String[][] {}), false, true);
    }

}