no.nlf.dal.ParachutistController.java Source code

Java tutorial

Introduction

Here is the source code for no.nlf.dal.ParachutistController.java

Source

package no.nlf.dal;

import java.security.NoSuchAlgorithmException;
import java.security.NoSuchProviderException;
import java.util.ArrayList;
import java.util.List;

import no.nlf.dal.config.AppContext;
import no.nlf.dal.config.MongoCounter;
import no.nlf.models.classes.Club;
import no.nlf.models.classes.License;
import no.nlf.models.classes.Parachutist;
import no.nlf.models.mongoclasses.MongoParachutist;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.FindAndModifyOptions;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Service;

/**
 * 
 * @author: Tore Buer, s180346
 * @author: Eivind Jacobsen, s173466
 * @author: Morten Kristoffersen, s169440
 * 
 * @since may.26.2014
 *
 */
@Service
public class ParachutistController {

    private MongoParachutist mongoParachutist;
    private Query searchPerson;

    @Autowired
    private AppContext appContext;

    @Autowired
    private MongoCounter mongoCounter;

    @Autowired
    private LicenseController licenseController;

    @Autowired
    private ClubController clubController;

    public ParachutistController() throws NoSuchAlgorithmException, NoSuchProviderException {
    };

    public List<Parachutist> getAll() {
        List<MongoParachutist> mongoParachutists = appContext.mongoOperation().findAll(MongoParachutist.class);
        ArrayList<Parachutist> parachutists = new ArrayList<>();

        List<License> allLicenses = licenseController.getAll();
        List<Club> allClubs = clubController.getAll();

        if (mongoParachutists.isEmpty()) {
            return parachutists;
        }

        Parachutist parachutist = new Parachutist();
        for (MongoParachutist mongoParachutist : mongoParachutists) {
            parachutist = mongoParachutist.toParachutist();

            for (License license : allLicenses) {
                for (Integer licenseId : mongoParachutist.getLicenses()) {
                    if (license.getId() == licenseId) {
                        parachutist.getLicenses().add(license);
                    }
                }
            }

            for (Club club : allClubs) {
                for (Integer clubId : mongoParachutist.getMemberclubs()) {
                    if (club.getId() == clubId) {
                        parachutist.getMemberclubs().add(club);
                    }
                }
            }

            parachutists.add(parachutist);

        }

        return parachutists;
    }

    public Parachutist getOne(int id) {
        searchPerson = new Query(Criteria.where("id").is(id));
        mongoParachutist = appContext.mongoOperation().findOne(searchPerson, MongoParachutist.class);

        Parachutist parachutist = mongoParachutist.toParachutist();

        List<Club> clubs = clubController.getAll();
        List<License> licenses = licenseController.getAll();

        for (Integer clubId : mongoParachutist.getMemberclubs()) {
            for (Club club : clubs) {
                if (clubId == club.getId()) {
                    parachutist.getMemberclubs().add(club);
                }
            }
        }

        for (Integer licenseId : mongoParachutist.getLicenses()) {
            for (License license : licenses) {
                if (licenseId == license.getId()) {
                    parachutist.getLicenses().add(licenseController.getOne(licenseId));
                }
            }

        }

        return parachutist;
    }

    public Parachutist getOneWithMelwinId(String melwinId) {
        Query query = new Query(Criteria.where("melwinId").is(melwinId));

        mongoParachutist = appContext.mongoOperation().findOne(query, MongoParachutist.class);

        if (mongoParachutist == null) {
            return new Parachutist();
        }

        Parachutist parachutist = mongoParachutist.toParachutist();

        for (Integer clubId : mongoParachutist.getMemberclubs()) {
            parachutist.getMemberclubs().add(clubController.getOne(clubId));
        }

        for (Integer licenseId : mongoParachutist.getLicenses()) {
            parachutist.getLicenses().add(licenseController.getOne(licenseId));
        }

        return parachutist;

    }

    public Parachutist save(Parachutist parachutist) {
        mongoParachutist = new MongoParachutist(parachutist);
        mongoParachutist.setId(mongoCounter.getNextSequence("jumpers"));

        appContext.mongoOperation().save(mongoParachutist);

        Parachutist returnParachutist = mongoParachutist.toParachutist();

        returnParachutist.setLicenses(parachutist.getLicenses());
        returnParachutist.setMemberclubs(parachutist.getMemberclubs());

        return returnParachutist;
    }

    public Parachutist update(Parachutist parachutist) {
        MongoParachutist mongoParachutist = new MongoParachutist(parachutist);

        Update updateMongoParacutist = new Update();

        Query queryMongoParachutists = new Query(Criteria.where("melwinId").is(mongoParachutist.getMelwinId()));

        updateMongoParacutist.set("memberclubs", mongoParachutist.getMemberclubs());
        updateMongoParacutist.set("licenses", mongoParachutist.getLicenses());
        updateMongoParacutist.set("firstname", mongoParachutist.getFirstname());
        updateMongoParacutist.set("lastname", mongoParachutist.getLastname());
        updateMongoParacutist.set("bithdate", mongoParachutist.getBirthdate());
        updateMongoParacutist.set("street", mongoParachutist.getStreet());
        updateMongoParacutist.set("gender", mongoParachutist.getGender());
        updateMongoParacutist.set("phone", mongoParachutist.getPhone());
        updateMongoParacutist.set("mail", mongoParachutist.getMail());
        updateMongoParacutist.set("postnumber", mongoParachutist.getPostnumber());
        updateMongoParacutist.set("postplace", mongoParachutist.getPostplace());

        mongoParachutist = appContext.mongoOperation().findAndModify(queryMongoParachutists, updateMongoParacutist,
                new FindAndModifyOptions().returnNew(true), MongoParachutist.class);

        if (mongoParachutist != null) {
            return mongoParachutist.toParachutist();
        }

        return new Parachutist();
    }

    public Parachutist delete(int id) {
        searchPerson = new Query(Criteria.where("id").is(id));
        mongoParachutist = appContext.mongoOperation().findOne(searchPerson, MongoParachutist.class);
        appContext.mongoOperation().remove(mongoParachutist);

        return mongoParachutist.toParachutist();
    }

    public boolean validateUser(String melwinId) {
        Query searchPerson = new Query(Criteria.where("melwinId").is(melwinId));
        MongoParachutist mp = appContext.mongoOperation().findOne(searchPerson, MongoParachutist.class);

        if (mp == null)
            return false;

        return true;
    }

    public boolean existsUserNotPassword(String melwinId, String nakkey) {
        Query searchPerson = new Query(Criteria.where("nak").is(melwinId));
        mongoParachutist = appContext.mongoOperation().findOne(searchPerson, MongoParachutist.class);

        if (mongoParachutist.getNakKey().equals(""))
            return true;
        return false;
    }

}