no.dusken.momus.controller.DevController.java Source code

Java tutorial

Introduction

Here is the source code for no.dusken.momus.controller.DevController.java

Source

/*
 * Copyright 2014 Studentmediene i Trondheim AS
 *
 * Licensed 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 no.dusken.momus.controller;

import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
import com.google.api.client.http.HttpTransport;
import com.google.api.client.json.JsonFactory;
import com.google.api.client.json.jackson2.JacksonFactory;
import com.google.api.services.drive.Drive;
import com.google.api.services.drive.model.About;
import com.google.api.services.drive.model.FileList;
import no.dusken.momus.authentication.AuthUserDetails;
import no.dusken.momus.authentication.LdapUserPwd;
import no.dusken.momus.authentication.Token;
import no.dusken.momus.authentication.UserLoginService;
import no.dusken.momus.ldap.LdapSyncer;
import no.dusken.momus.model.*;
import no.dusken.momus.service.repository.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.ClassPathResource;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Controller;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.TypedQuery;
import java.io.File;
import java.io.IOException;
import java.security.GeneralSecurityException;
import java.util.*;

/**
 * Dev only, not accessible when live
 * Utility methods etc. goes here.
 */
@Controller
@RequestMapping("/dev")
public class DevController {

    private Logger logger = LoggerFactory.getLogger(getClass());

    @Autowired
    private UserLoginService userLoginService;

    @Autowired
    private SectionRepository sectionRepository;

    @Autowired
    private ArticleRepository articleRepository;

    @Autowired
    private PersonRepository personRepository;

    @Autowired
    private DispositionRepository dispositionRepository;

    @Autowired
    private PageRepository pageRepository;

    @Autowired
    private ArticleTypeRepository articleTypeRepository;

    @Autowired
    private ArticleStatusRepository articleStatusRepository;
    @Autowired
    private PublicationRepository publicationRepository;

    @Autowired
    LdapSyncer ldapSyncer;

    /**
     * Bypass login and logs you in as the user with the provided id
     */
    @RequestMapping("/login/{id}")
    public @ResponseBody void login(@PathVariable("id") Long id) {
        AuthUserDetails user = new AuthUserDetails(personRepository.findOne(id));
        Token token = new Token(null, user);
        SecurityContextHolder.getContext().setAuthentication(token);
    }

    @RequestMapping("/login/test")
    public @ResponseBody void logintest() {
        userLoginService.login(new LdapUserPwd("sharon.nymo", "vague tacky drop"));
    }

    @RequestMapping("/ldaptest")
    public @ResponseBody String ldaptest() {
        ldapSyncer.sync();
        return "oook";
    }

    private GoogleCredential credential = null;
    private Drive drive = null;

    @RequestMapping("/gdoc")
    public @ResponseBody String gdocTest() {

        JsonFactory jsonFactory = JacksonFactory.getDefaultInstance();
        HttpTransport httpTransport = null;
        try {
            httpTransport = GoogleNetHttpTransport.newTrustedTransport();
        } catch (GeneralSecurityException | IOException e) {
            e.printStackTrace();
        }
        try {

            if (credential == null) {

                String email = "68986569027-ecn9md3ej7krhquhvamf7phfovro8aru@developer.gserviceaccount.com";

                ClassPathResource classPathResource = new ClassPathResource("googlekey.p12");
                File file = classPathResource.getFile();

                Collection<String> scopes = new ArrayList<>();
                scopes.add("https://www.googleapis.com/auth/drive");

                logger.info("making credentials");

                credential = new GoogleCredential.Builder().setTransport(httpTransport).setJsonFactory(jsonFactory)
                        .setServiceAccountId(email)
                        //                    .setServiceAccountPrivateKey
                        .setServiceAccountPrivateKeyFromP12File(file).setServiceAccountScopes(scopes).build();

                logger.info("made credentials");
            }

            if (drive == null) {

                drive = new Drive.Builder(httpTransport, jsonFactory, credential)
                        .setApplicationName("momustest-molten-aurora-752").build();

                logger.info("made drive");
            }

            long start = System.currentTimeMillis();

            // list all files
            Drive.Files.List request = drive.files().list();
            FileList fileList = request.execute();

            List<com.google.api.services.drive.model.File> items = fileList.getItems();
            for (com.google.api.services.drive.model.File item : items) {
                logger.info("file: {}", item);
                //                Map<String, String> exportLinks = item.getExportLinks();//.get("text/html");
                //                String s = exportLinks.get("text/plain"); // will crash for stuff not having this
                //                logger.debug("test");
            }

            About execute = drive.about().get().execute();

            // insert file
            //            com.google.api.services.drive.model.File insertFile = new com.google.api.services.drive.model.File();
            //            insertFile.setTitle("mats2.odt");
            //            insertFile.setMimeType("application/vnd.google-apps.document");
            //            com.google.api.services.drive.model.File uploaded = drive.files().insert(insertFile).execute();
            //            logger.info("uploaded file id({}): {}", uploaded.getId(), uploaded);
            //
            //            Permission permission = new Permission();
            //            permission.setRole("writer");
            //            permission.setType("anyone");
            //            permission.setValue("default");
            //            permission.setWithLink(true);
            //
            //            drive.permissions().insert(uploaded.getId(), permission).execute();

            long end = System.currentTimeMillis();
            long timeUsed = end - start;
            logger.debug("Time spent: {}ms", timeUsed);

        } catch (GeneralSecurityException | IOException e) {
            logger.debug("Ex: ", e);
        }

        return "gdoc ok";
    }

    @RequestMapping("/editor")
    @PreAuthorize("hasRole('momus:editor')")
    public @ResponseBody String editor() {
        return "editor ok";
    }

    @RequestMapping("/createArticles")
    public @ResponseBody String createTestArticle1() {
        Article article1 = new Article();

        Set<Person> journalists1 = new HashSet<>();
        Set<Person> photographers1 = new HashSet<>();
        journalists1.add(personRepository.findOne(594L));
        photographers1.add(personRepository.findOne(600L));

        article1.setJournalists(journalists1);
        article1.setPhotographers(photographers1);
        article1.setContent(
                " Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus consequat ultricies nibh nec gravida. Proin sed posuere quam. Interdum et malesuada fames ac ante ipsum primis in faucibus. Aenean a augue nec lectus aliquet euismod et eget diam. Morbi mattis ante eget neque tincidunt porttitor. Morbi in pellentesque ante, vitae tempus leo. Phasellus ut augue elit. Ut porta vulputate odio, quis vestibulum mi pellentesque sit amet. Nullam bibendum elit et mauris pretium molestie quis in elit. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Aliquam ac nibh vitae dolor tincidunt convallis sit amet ut tellus. Aenean lacinia rutrum ligula, eu pellentesque dolor viverra vel. ");
        article1.setNote("detta er et nottat");
        article1.setName("Artikkelnavn");

        // Setting article Type
        List<ArticleType> articleTypes = articleTypeRepository.findAll();
        for (ArticleType articleType : articleTypes) {
            if (articleType.getName().equals("KulturRaport")) {
                article1.setType(articleType);
            }
        }

        // Setting article status
        List<ArticleStatus> articleStatuses = articleStatusRepository.findAll();
        for (ArticleStatus articlestatus : articleStatuses) {
            if (articlestatus.getName().equals("Skrives")) {
                article1.setStatus(articlestatus);
            }
        }

        articleRepository.save(article1);

        Article article2 = new Article();

        Set<Person> journalists2 = new HashSet<>();
        Set<Person> photographers2 = new HashSet<>();
        journalists2.add(personRepository.findOne(601L));
        photographers2.add(personRepository.findOne(594L));

        article2.setJournalists(journalists2);
        article2.setPhotographers(photographers2);
        article2.setContent(
                " Integer id libero diam. Curabitur a pellentesque risus. Fusce ac justo id erat posuere dictum vel et arcu. Quisque et purus nibh. Fusce vel fringilla arcu. Pellentesque ac est mauris. Fusce quis tellus posuere, pharetra ante sit amet, elementum nibh. Donec pretium, lacus et porttitor placerat, diam quam posuere libero, sit amet dignissim tortor est nec justo. Donec in pulvinar risus. Donec at eleifend ligula, quis porta diam. Sed at rutrum est. Proin molestie euismod nunc, a blandit ligula egestas quis. Fusce et sollicitudin dui. Pellentesque vulputate eros id luctus porta. Proin quis urna sed sem lobortis sollicitudin. Donec non diam viverra, dictum arcu at, porta odio. ");
        article2.setNote("detta er ogs et nottat");
        article2.setName("Artikkelnavn 2: Electric Boogaloo");

        List<ArticleType> articleTypes2 = articleTypeRepository.findAll();
        for (ArticleType articleType2 : articleTypes2) {
            if (articleType2.getName().equals("KulturRaport")) {
                article2.setType(articleType2);
            }
        }

        // Setting article status
        for (ArticleStatus articlestatus : articleStatuses) {
            if (articlestatus.getName().equals("Desk")) {
                article2.setStatus(articlestatus);
            }
        }

        articleRepository.save(article2);

        return "ok";
    }

    @PersistenceContext
    EntityManager entityManager;

    @RequestMapping("/test3")
    public @ResponseBody String test3() {

        Article article = new Article();
        article.setContent(
                "<h1>Flere enn fr takler ikke presset</h1><h2>Studentvelferd</h2><h4>Ingrid forteller en historie om et sykelig fokus p perfeksjon som \n"
                        + "frte til at hun ignorerte kroppens signaler om hvile, og endte i \n"
                        + "kollaps. Ny underskelse viser at dette er en kende tendens.\n"
                        + "            </h4><p>Studentenes helse- og trivselsunderskelse 2014 ble presentert i Oslo\n"
                        + " p onsdag. Lesningen er iflge pressemeldinger fra hele landets \n"
                        + "studentpolitikere, alarmerende.</p>\n"
                        + "<p>Det har vrt en klar kning i psykiske problemer blant studenter. \n"
                        + "Spesielt blant kvinnelige studenter. Andelen kvinner som svarer at de \n"
                        + "har middels, alvorlige eller mange og alvorlige symptomer har kt \n"
                        + "fra 31 til 40 prosent. Samtidig svarer 36 prosent av kvinnene at de er \n"
                        + "misfornyd med egen vekt og 30 prosent svarer at de er misfornyd med \n"
                        + "eget utseende.</p><h3>Avfeide kyssesyken</h3>\n"
                        + "<p>Ingrid studerer Kultur og kommunikasjon ved Universitetet i Oslo \n"
                        + "(UiO), og forteller at hun mtte mte veggen fr hun gjorde en endring i\n"
                        + " livsstil. Hun var syk i eksamenstiden, men avfeide det som en vanlig \n"
                        + "influensa. Hun kom seg gjennom eksamene, men kollapset siste skoledag. \n"
                        + "Ingrid ble sendt i all hast til legevakten hvor de trodde hun hadde \n"
                        + "nyre- og leversvikt. Det viste seg at hun hadde hatt kyssesyken i lang \n"
                        + "tid som hadde utviklet seg til  bli veldig alvorlig.</p>\n"
                        + "<p> Jeg mtte vre sengeliggende i to mneder.</p>\n"
                        + "<p>Ingrid forteller penhjertig at hun tidligere slet med det skalte flink pike-syndromet. Hun skulle prestere p alle omrder. <br></p><h3>Enda en mellomtittel<br></h3>\n"
                        + "<p> Jeg brukte enorme mengder energi p skolen samtidig som jeg trente \n"
                        + "fem ganger i uka, og var srlig opptatt av  spise riktig. Jeg ville \n"
                        + "vre det perfekte mennesket p alle arenaer, sier hun.</p><blockquote>Jeg spiste bare jordbr hvvveeeer dag<br></blockquote>\n"
                        + "<p>Det var en kombinasjon av flere faktorer som drev atferden hennes \n"
                        + "framover. Ingrid forteller at det var en periode av livet hennes hvor \n"
                        + "hun ikke flte at hun hadde kontroll over egen kropp, eller det som \n"
                        + "foregikk rundt henne.</p>\n"
                        + "<p> Jeg ville ta kontroll p et vis, forklarer hun.</p><br><br>");

        //        Publication publication = new Publication();
        //        publication.setName("testpub");
        //        publication.setReleaseDate(new Date(114, 5, 5));
        //        publication = publicationRepository.save(publication);
        //
        //        article.setPublication(publication);

        article.setName("Test name");

        articleRepository.save(article);
        return "ok";
    }

    @RequestMapping("/articleTypes")
    public @ResponseBody String articleTypes() {
        articleTypeRepository.save(new ArticleType("KulturRaport", ""));
        articleTypeRepository.save(new ArticleType("Anmeldelse", ""));

        return "ok";
    }

    @RequestMapping("/test4")
    public @ResponseBody String test4() {

        ArticleStatus s1 = articleStatusRepository.save(new ArticleStatus("Planlagt", ""));
        ArticleStatus s2 = articleStatusRepository.save(new ArticleStatus("Skrives", ""));
        ArticleStatus s3 = articleStatusRepository.save(new ArticleStatus("Korrektur", ""));
        ArticleStatus s4 = articleStatusRepository.save(new ArticleStatus("Publisert", ""));

        ArticleType t1 = articleTypeRepository.save(new ArticleType("Anmeldelse", ""));
        ArticleType t2 = articleTypeRepository.save(new ArticleType("Nyhetsartikkel", ""));
        ArticleType t3 = articleTypeRepository.save(new ArticleType("Reportasje", ""));
        ArticleType t4 = articleTypeRepository.save(new ArticleType("Debattinnlegg", ""));

        Publication p1 = new Publication();
        p1.setName("12-2014");
        p1.setReleaseDate(new Date(114, 5, 5));
        p1 = publicationRepository.save(p1);

        Publication p2 = new Publication();
        p2.setName("11-2014");
        p2.setReleaseDate(new Date(114, 4, 5));
        p2 = publicationRepository.save(p2);

        Publication p3 = new Publication();
        p3.setName("10-2014");
        p3.setReleaseDate(new Date(114, 3, 5));
        p3 = publicationRepository.save(p3);

        Publication p4 = new Publication();
        p4.setName("11-2013");
        p4.setReleaseDate(new Date(113, 4, 5));
        p4 = publicationRepository.save(p4);

        Disposition disposition = new Disposition(p1.getId());
        disposition.setPublication(p1);
        dispositionRepository.save(disposition);

        Disposition disposition2 = new Disposition(p2.getId());
        disposition2.setPublication(p2);
        dispositionRepository.save(disposition2);

        Disposition disposition3 = new Disposition(p3.getId());
        disposition3.setPublication(p3);
        dispositionRepository.save(disposition3);

        Article a1 = new Article();
        a1.setName("Lovlig Norsk");
        a1.setStatus(s2);
        a1.setType(t3);
        a1.setJournalists(new HashSet<>(Arrays.asList(new Person(594L), new Person(113L))));
        a1.setPhotographers(new HashSet<>(Arrays.asList(new Person(113L))));
        a1.setContent(
                "<h1>Lovlig Norsk</h1><h4>I 2011 ble tidligere NTNU-student Maria Amelie tvangsreturnert etter tte rs ulovlig opphold i Norge. I gr var hun tilbake p Studentersamfundet for  fortelle om boka Takk.<br></h4><p>Maria Amelie engasjerte tusenvis av nordmenn og skapte stor debatt da Utlendingsnemnda i januar 2011 vedtok at Amelie ikke hadde rett til  bli i Norge. Hun mtte returnere til Russland  til tross for at hun snakket norsk, hadde et norsk nettverk, mastergrad fra NTNU og var selve kroneksempelet p vellykket integrering. I Russland hadde hun kanskje ingen.</p><h3>Tilbake p Samfundet</h3><p>Men n er hun tilbake p Samfundet. Et sted hun trolig har vrt mye, gjennom verv i ISFiT, UKA og Kulturutvalget. Hennes frste bok, titulert&nbsp;<i>Ulovlig norsk</i>, bidro til bde resmedlemsskap p Samfundet og tvangsdeportering til hjemlandet. I gr leste hun fra&nbsp;<i>Takk</i>. Den handler om oppholdet p Trandum asylfengsel, et sted som selveste FNs torturkomite har rettet sterk kritikk mot.</p><blockquote>Vi skal kroppsvisitere deg, sa en av politikvinnene. Du m ta av deg alt du har p deg, sa hun mens hun dro p seg tynne plasthansker. Absolutt alt? spurte jeg. Ja, svarte hun. Hjertet mitt slo fortere. Jeg nlte, men bet tennene sammen og begynte  ta av meg kardigan, skjrt, topp, beh, sko, strmpebukser, truse, sokker. () Dette er rutinene vre, vi gjr det med alle, selv om det kan fles litt ubehagelig. Jeg skrev ikke boken for  ha det behagelig, sa jeg mens jeg tok av meg trusene.</blockquote><p> Jeg mtte forske  dele meg i to: kroppen, og tankene. Jeg tenkte p eldre damer og sm barn som mtte gjennom samme underskelse. Og jeg var veldig glad foreldrene mine slapp dette, sier hun.</p><p>Amelies foreldre reiste tilbake til Russland i 2011. Begge to hadde i lang tid vrt syke.</p><p> De nsket begge  arbeide for  bidra i samfunnet. Men det kunne de ikke uten oppholdstillatelse. N har de endelige ftt profesjonell hjelp av psykolog, og helsa har blitt bedre.</p><h3>Helt usynlig</h3><p>Som papirls har du ingen rettigheter: Ikke studieln fra Lnekassen, ikke fastlege. Det er ingen statistikk som fanger deg opp. Dette ble srlig klart for Maria Amelie etter en sykdomsperiode hvor hun ikke torde  oppske lege.</p><p> Jeg tenkte: Hva om jeg hadde en kjempesmittsom sykdom? Hva om jeg ble gravid? Hva om jeg ble vitne til en kriminell hendelse?</p><p>Da hun i september 2011 ga ut boken Ulovlig norsk som blant annet er basert p hennes egne dagboknotater, flte hun for frste gang p lenge at n finnes jeg.</p><p>Trandum asylfengsel Konsekvensen av  finnes ble Trandum asylfengsel, et sted like ved Gardemoen for midlertidig oppbevaring av asylskere. Bde Maria og mange organisasjoner har kritisert Trandum for brudd p menneskerettighetene. Blant det som er blitt kritisert er stedets strenge sikkerhetsprosedyrer og minimale aktivitetstilbud.</p><p> Trandum har betydd mye for meg. P godt og vondt. Mest p vondt.</p><p><i>Takk</i>&nbsp;handler mye om tida p Trandum. Herfra ser man ironisk nok kun fly som forlater Norge, og ingen som lander, forteller Maria.</p><p>  vre asylsker betyr ingen ende p reisen?. Jeg visste aldri hvor lenge jeg mtte vente p Trandum. Andre kriminelle fr vite hvor lenge de skal sitte fengslet, og i det ligger det litt verdighet. Den verdigheten fikk ikke jeg, sier hun.</p><h3>Regelendring</h3><p>Som en flge av den voldsomme sttten fra bde offentligheten og politikere endret regjeringen regelverket i Utlendingsloven. Etter april 2011 kunne personer med relevant fagutdanning og jobbtilbud komme tilbake til Norge som arbeidsinnvandrere, etter avslag p sknad om asyl.</p>");
        a1.setNote("<p>Notat her</p>");
        a1.setPublication(p1);
        articleRepository.save(a1);

        Article a2 = new Article();
        a2.setName(" Mora mi kalla meg eit ugras");
        a2.setStatus(s4);
        a2.setType(t2);
        a2.setJournalists(new HashSet<>(Arrays.asList(new Person(103L))));
        a2.setPhotographers(new HashSet<>(Arrays.asList(new Person(594L), new Person(113L))));
        a2.setContent(
                "<h1>Mora mi</h1><h4>Det er ikkje ofte 500 studentar str 15 minutt fr foredragstart. Men s er det ikkje kvar dag at administrerande direktr i Statoil er forelesar.<br></h4><p>Karrieredagane 2014, arrangert av Bindeleddet NTNU, har i r samla 140 ulike bedrifter for  skape kontakt mellom studentar ved NTNU og nringslivet. For  sparke det heile i gang var Helge Lund invitert for  halde opningsforedraget.</p><h3> Ein veit aldri kva ein kjem til  jobbe med</h3><p>Nr 500 studentar hadde forventingsfullt toga inn i auditoriet for  hyre direktren i Statoil fortelje om korleis karrieren hans blei til. </p><p> Det er nesten slik at eg m angre p  ikkje be om inngangspengar.</p><p>P sprsml om korleis han kvar dag orkar  st opp til ei ny rekkje ansvarsoppgver, svarar Helge Lund med  sitere mora si. </p><p> Mora mi kalla meg eit ugras. Det er litt som ei badeand: Ho kjem alltid opp att. Eg spr ogs: Trur eg p det vi gjer, p dit vi er p veg og p verdigrunnlaget for verksemda, seier Lund.</p><p><i>Han fortel at det er litt tilfeldig kvar ein endar opp, men at det viktigaste er  vere nyfiken og  utfordre seg sjlv.</i></p><p> Ein treng ikkje legge detaljerte framtidsplanar. Eg prvar  gjere det best mogleg der eg er no, og eg trur at det ogs gir best moglegheiter i framtida.</p>");
        a2.setNote("<p>Notat her</p>");
        a2.setPublication(p1);
        articleRepository.save(a2);

        Article a3 = new Article();
        a3.setName("Finansstyret om UKA");
        a3.setStatus(s1);
        a3.setType(t1);
        a3.setJournalists(new HashSet<>(Arrays.asList(new Person(106L))));
        a3.setPhotographers(new HashSet<>(Arrays.asList(new Person(594L), new Person(113L))));
        a3.setContent(
                "<h1>Mora mi</h1><h4>Det er ikkje ofte 500 studentar str 15 minutt fr foredragstart. Men s er det ikkje kvar dag at administrerande direktr i Statoil er forelesar.<br></h4><p>Karrieredagane 2014, arrangert av Bindeleddet NTNU, har i r samla 140 ulike bedrifter for  skape kontakt mellom studentar ved NTNU og nringslivet. For  sparke det heile i gang var Helge Lund invitert for  halde opningsforedraget.</p><h3> Ein veit aldri kva ein kjem til  jobbe med</h3><p>Nr 500 studentar hadde forventingsfullt toga inn i auditoriet for  hyre direktren i Statoil fortelje om korleis karrieren hans blei til. </p><p> Det er nesten slik at eg m angre p  ikkje be om inngangspengar.</p><p>P sprsml om korleis han kvar dag orkar  st opp til ei ny rekkje ansvarsoppgver, svarar Helge Lund med  sitere mora si. </p><p> Mora mi kalla meg eit ugras. Det er litt som ei badeand: Ho kjem alltid opp att. Eg spr ogs: Trur eg p det vi gjer, p dit vi er p veg og p verdigrunnlaget for verksemda, seier Lund.</p><p><i>Han fortel at det er litt tilfeldig kvar ein endar opp, men at det viktigaste er  vere nyfiken og  utfordre seg sjlv.</i></p><p> Ein treng ikkje legge detaljerte framtidsplanar. Eg prvar  gjere det best mogleg der eg er no, og eg trur at det ogs gir best moglegheiter i framtida.</p>");
        a3.setNote("<p>Notat her</p>");
        a3.setPublication(p1);
        articleRepository.save(a3);

        Article a4 = new Article();
        a4.setName("Kul artikkel");
        a4.setStatus(s4);
        a4.setType(t1);
        a4.setJournalists(new HashSet<>(Arrays.asList(new Person(594L))));
        a4.setPhotographers(new HashSet<>(Arrays.asList(new Person(106L))));
        a4.setContent(
                "<h1>Lovlig Norsk</h1><h4>I 2011 ble tidligere NTNU-student Maria Amelie tvangsreturnert etter tte rs ulovlig opphold i Norge. I gr var hun tilbake p Studentersamfundet for  fortelle om boka Takk.<br></h4><p>Maria Amelie engasjerte tusenvis av nordmenn og skapte stor debatt da Utlendingsnemnda i januar 2011 vedtok at Amelie ikke hadde rett til  bli i Norge. Hun mtte returnere til Russland  til tross for at hun snakket norsk, hadde et norsk nettverk, mastergrad fra NTNU og var selve kroneksempelet p vellykket integrering. I Russland hadde hun kanskje ingen.</p><h3>Tilbake p Samfundet</h3><p>Men n er hun tilbake p Samfundet. Et sted hun trolig har vrt mye, gjennom verv i ISFiT, UKA og Kulturutvalget. Hennes frste bok, titulert&nbsp;<i>Ulovlig norsk</i>, bidro til bde resmedlemsskap p Samfundet og tvangsdeportering til hjemlandet. I gr leste hun fra&nbsp;<i>Takk</i>. Den handler om oppholdet p Trandum asylfengsel, et sted som selveste FNs torturkomite har rettet sterk kritikk mot.</p><blockquote>Vi skal kroppsvisitere deg, sa en av politikvinnene. Du m ta av deg alt du har p deg, sa hun mens hun dro p seg tynne plasthansker. Absolutt alt? spurte jeg. Ja, svarte hun. Hjertet mitt slo fortere. Jeg nlte, men bet tennene sammen og begynte  ta av meg kardigan, skjrt, topp, beh, sko, strmpebukser, truse, sokker. () Dette er rutinene vre, vi gjr det med alle, selv om det kan fles litt ubehagelig. Jeg skrev ikke boken for  ha det behagelig, sa jeg mens jeg tok av meg trusene.</blockquote><p> Jeg mtte forske  dele meg i to: kroppen, og tankene. Jeg tenkte p eldre damer og sm barn som mtte gjennom samme underskelse. Og jeg var veldig glad foreldrene mine slapp dette, sier hun.</p><p>Amelies foreldre reiste tilbake til Russland i 2011. Begge to hadde i lang tid vrt syke.</p><p> De nsket begge  arbeide for  bidra i samfunnet. Men det kunne de ikke uten oppholdstillatelse. N har de endelige ftt profesjonell hjelp av psykolog, og helsa har blitt bedre.</p><h3>Helt usynlig</h3><p>Som papirls har du ingen rettigheter: Ikke studieln fra Lnekassen, ikke fastlege. Det er ingen statistikk som fanger deg opp. Dette ble srlig klart for Maria Amelie etter en sykdomsperiode hvor hun ikke torde  oppske lege.</p><p> Jeg tenkte: Hva om jeg hadde en kjempesmittsom sykdom? Hva om jeg ble gravid? Hva om jeg ble vitne til en kriminell hendelse?</p><p>Da hun i september 2011 ga ut boken Ulovlig norsk som blant annet er basert p hennes egne dagboknotater, flte hun for frste gang p lenge at n finnes jeg.</p><p>Trandum asylfengsel Konsekvensen av  finnes ble Trandum asylfengsel, et sted like ved Gardemoen for midlertidig oppbevaring av asylskere. Bde Maria og mange organisasjoner har kritisert Trandum for brudd p menneskerettighetene. Blant det som er blitt kritisert er stedets strenge sikkerhetsprosedyrer og minimale aktivitetstilbud.</p><p> Trandum har betydd mye for meg. P godt og vondt. Mest p vondt.</p><p><i>Takk</i>&nbsp;handler mye om tida p Trandum. Herfra ser man ironisk nok kun fly som forlater Norge, og ingen som lander, forteller Maria.</p><p>  vre asylsker betyr ingen ende p reisen?. Jeg visste aldri hvor lenge jeg mtte vente p Trandum. Andre kriminelle fr vite hvor lenge de skal sitte fengslet, og i det ligger det litt verdighet. Den verdigheten fikk ikke jeg, sier hun.</p><h3>Regelendring</h3><p>Som en flge av den voldsomme sttten fra bde offentligheten og politikere endret regjeringen regelverket i Utlendingsloven. Etter april 2011 kunne personer med relevant fagutdanning og jobbtilbud komme tilbake til Norge som arbeidsinnvandrere, etter avslag p sknad om asyl.</p>");
        a4.setNote("<p>Notat her</p>");
        a4.setPublication(p2);
        articleRepository.save(a4);

        Article a5 = new Article();
        a5.setName("NTNU pusser opp");
        a5.setStatus(s2);
        a5.setType(t2);
        a5.setJournalists(new HashSet<>(Arrays.asList(new Person(103L))));
        a5.setPhotographers(new HashSet<>(Arrays.asList(new Person(594L), new Person(113L))));
        a5.setContent(
                "<h1>Mora mi</h1><h4>Det er ikkje ofte 500 studentar str 15 minutt fr foredragstart. Men s er det ikkje kvar dag at administrerande direktr i Statoil er forelesar.<br></h4><p>Karrieredagane 2014, arrangert av Bindeleddet NTNU, har i r samla 140 ulike bedrifter for  skape kontakt mellom studentar ved NTNU og nringslivet. For  sparke det heile i gang var Helge Lund invitert for  halde opningsforedraget.</p><h3> Ein veit aldri kva ein kjem til  jobbe med</h3><p>Nr 500 studentar hadde forventingsfullt toga inn i auditoriet for  hyre direktren i Statoil fortelje om korleis karrieren hans blei til. </p><p> Det er nesten slik at eg m angre p  ikkje be om inngangspengar.</p><p>P sprsml om korleis han kvar dag orkar  st opp til ei ny rekkje ansvarsoppgver, svarar Helge Lund med  sitere mora si. </p><p> Mora mi kalla meg eit ugras. Det er litt som ei badeand: Ho kjem alltid opp att. Eg spr ogs: Trur eg p det vi gjer, p dit vi er p veg og p verdigrunnlaget for verksemda, seier Lund.</p><p><i>Han fortel at det er litt tilfeldig kvar ein endar opp, men at det viktigaste er  vere nyfiken og  utfordre seg sjlv.</i></p><p> Ein treng ikkje legge detaljerte framtidsplanar. Eg prvar  gjere det best mogleg der eg er no, og eg trur at det ogs gir best moglegheiter i framtida.</p>");
        a5.setNote("<p>Notat her</p>");
        a5.setPublication(p2);
        articleRepository.save(a5);

        Article a6 = new Article();
        a6.setName("Samlokalisering p G");
        a6.setStatus(s1);
        a6.setType(t1);
        a6.setJournalists(new HashSet<>(Arrays.asList(new Person(72L))));
        a6.setPhotographers(new HashSet<>(Arrays.asList(new Person(106L), new Person(113L))));
        a6.setContent(
                "<h1>Mora mi</h1><h4>Det er ikkje ofte 500 studentar str 15 minutt fr foredragstart. Men s er det ikkje kvar dag at administrerande direktr i Statoil er forelesar.<br></h4><p>Karrieredagane 2014, arrangert av Bindeleddet NTNU, har i r samla 140 ulike bedrifter for  skape kontakt mellom studentar ved NTNU og nringslivet. For  sparke det heile i gang var Helge Lund invitert for  halde opningsforedraget.</p><h3> Ein veit aldri kva ein kjem til  jobbe med</h3><p>Nr 500 studentar hadde forventingsfullt toga inn i auditoriet for  hyre direktren i Statoil fortelje om korleis karrieren hans blei til. </p><p> Det er nesten slik at eg m angre p  ikkje be om inngangspengar.</p><p>P sprsml om korleis han kvar dag orkar  st opp til ei ny rekkje ansvarsoppgver, svarar Helge Lund med  sitere mora si. </p><p> Mora mi kalla meg eit ugras. Det er litt som ei badeand: Ho kjem alltid opp att. Eg spr ogs: Trur eg p det vi gjer, p dit vi er p veg og p verdigrunnlaget for verksemda, seier Lund.</p><p><i>Han fortel at det er litt tilfeldig kvar ein endar opp, men at det viktigaste er  vere nyfiken og  utfordre seg sjlv.</i></p><p> Ein treng ikkje legge detaljerte framtidsplanar. Eg prvar  gjere det best mogleg der eg er no, og eg trur at det ogs gir best moglegheiter i framtida.</p>");
        a6.setNote("<p>Notat her</p>");
        a6.setPublication(p2);
        articleRepository.save(a6);

        Article a7 = new Article();
        a7.setName("Ulovlig Norsk");
        a7.setStatus(s2);
        a7.setType(t3);
        a7.setJournalists(new HashSet<>(Arrays.asList(new Person(594L), new Person(192L))));
        a7.setPhotographers(new HashSet<>(Arrays.asList(new Person(113L))));
        a7.setContent(
                "<h1>Lovlig Norsk</h1><h4>I 2011 ble tidligere NTNU-student Maria Amelie tvangsreturnert etter tte rs ulovlig opphold i Norge. I gr var hun tilbake p Studentersamfundet for  fortelle om boka Takk.<br></h4><p>Maria Amelie engasjerte tusenvis av nordmenn og skapte stor debatt da Utlendingsnemnda i januar 2011 vedtok at Amelie ikke hadde rett til  bli i Norge. Hun mtte returnere til Russland  til tross for at hun snakket norsk, hadde et norsk nettverk, mastergrad fra NTNU og var selve kroneksempelet p vellykket integrering. I Russland hadde hun kanskje ingen.</p><h3>Tilbake p Samfundet</h3><p>Men n er hun tilbake p Samfundet. Et sted hun trolig har vrt mye, gjennom verv i ISFiT, UKA og Kulturutvalget. Hennes frste bok, titulert&nbsp;<i>Ulovlig norsk</i>, bidro til bde resmedlemsskap p Samfundet og tvangsdeportering til hjemlandet. I gr leste hun fra&nbsp;<i>Takk</i>. Den handler om oppholdet p Trandum asylfengsel, et sted som selveste FNs torturkomite har rettet sterk kritikk mot.</p><blockquote>Vi skal kroppsvisitere deg, sa en av politikvinnene. Du m ta av deg alt du har p deg, sa hun mens hun dro p seg tynne plasthansker. Absolutt alt? spurte jeg. Ja, svarte hun. Hjertet mitt slo fortere. Jeg nlte, men bet tennene sammen og begynte  ta av meg kardigan, skjrt, topp, beh, sko, strmpebukser, truse, sokker. () Dette er rutinene vre, vi gjr det med alle, selv om det kan fles litt ubehagelig. Jeg skrev ikke boken for  ha det behagelig, sa jeg mens jeg tok av meg trusene.</blockquote><p> Jeg mtte forske  dele meg i to: kroppen, og tankene. Jeg tenkte p eldre damer og sm barn som mtte gjennom samme underskelse. Og jeg var veldig glad foreldrene mine slapp dette, sier hun.</p><p>Amelies foreldre reiste tilbake til Russland i 2011. Begge to hadde i lang tid vrt syke.</p><p> De nsket begge  arbeide for  bidra i samfunnet. Men det kunne de ikke uten oppholdstillatelse. N har de endelige ftt profesjonell hjelp av psykolog, og helsa har blitt bedre.</p><h3>Helt usynlig</h3><p>Som papirls har du ingen rettigheter: Ikke studieln fra Lnekassen, ikke fastlege. Det er ingen statistikk som fanger deg opp. Dette ble srlig klart for Maria Amelie etter en sykdomsperiode hvor hun ikke torde  oppske lege.</p><p> Jeg tenkte: Hva om jeg hadde en kjempesmittsom sykdom? Hva om jeg ble gravid? Hva om jeg ble vitne til en kriminell hendelse?</p><p>Da hun i september 2011 ga ut boken Ulovlig norsk som blant annet er basert p hennes egne dagboknotater, flte hun for frste gang p lenge at n finnes jeg.</p><p>Trandum asylfengsel Konsekvensen av  finnes ble Trandum asylfengsel, et sted like ved Gardemoen for midlertidig oppbevaring av asylskere. Bde Maria og mange organisasjoner har kritisert Trandum for brudd p menneskerettighetene. Blant det som er blitt kritisert er stedets strenge sikkerhetsprosedyrer og minimale aktivitetstilbud.</p><p> Trandum har betydd mye for meg. P godt og vondt. Mest p vondt.</p><p><i>Takk</i>&nbsp;handler mye om tida p Trandum. Herfra ser man ironisk nok kun fly som forlater Norge, og ingen som lander, forteller Maria.</p><p>  vre asylsker betyr ingen ende p reisen?. Jeg visste aldri hvor lenge jeg mtte vente p Trandum. Andre kriminelle fr vite hvor lenge de skal sitte fengslet, og i det ligger det litt verdighet. Den verdigheten fikk ikke jeg, sier hun.</p><h3>Regelendring</h3><p>Som en flge av den voldsomme sttten fra bde offentligheten og politikere endret regjeringen regelverket i Utlendingsloven. Etter april 2011 kunne personer med relevant fagutdanning og jobbtilbud komme tilbake til Norge som arbeidsinnvandrere, etter avslag p sknad om asyl.</p>");
        a7.setNote("<p>Notat her</p>");
        a7.setPublication(p2);
        articleRepository.save(a7);

        Article a8 = new Article();
        a8.setName("En kveld p Samfundet");
        a8.setStatus(s4);
        a8.setType(t2);
        a8.setJournalists(new HashSet<>(Arrays.asList(new Person(228L))));
        a8.setPhotographers(new HashSet<>(Arrays.asList(new Person(113L))));
        a8.setContent(
                "<h1>Mora mi</h1><h4>Det er ikkje ofte 500 studentar str 15 minutt fr foredragstart. Men s er det ikkje kvar dag at administrerande direktr i Statoil er forelesar.<br></h4><p>Karrieredagane 2014, arrangert av Bindeleddet NTNU, har i r samla 140 ulike bedrifter for  skape kontakt mellom studentar ved NTNU og nringslivet. For  sparke det heile i gang var Helge Lund invitert for  halde opningsforedraget.</p><h3> Ein veit aldri kva ein kjem til  jobbe med</h3><p>Nr 500 studentar hadde forventingsfullt toga inn i auditoriet for  hyre direktren i Statoil fortelje om korleis karrieren hans blei til. </p><p> Det er nesten slik at eg m angre p  ikkje be om inngangspengar.</p><p>P sprsml om korleis han kvar dag orkar  st opp til ei ny rekkje ansvarsoppgver, svarar Helge Lund med  sitere mora si. </p><p> Mora mi kalla meg eit ugras. Det er litt som ei badeand: Ho kjem alltid opp att. Eg spr ogs: Trur eg p det vi gjer, p dit vi er p veg og p verdigrunnlaget for verksemda, seier Lund.</p><p><i>Han fortel at det er litt tilfeldig kvar ein endar opp, men at det viktigaste er  vere nyfiken og  utfordre seg sjlv.</i></p><p> Ein treng ikkje legge detaljerte framtidsplanar. Eg prvar  gjere det best mogleg der eg er no, og eg trur at det ogs gir best moglegheiter i framtida.</p>");
        a8.setNote("<p>Notat her</p>");
        a8.setPublication(p3);
        articleRepository.save(a8);

        Article a9 = new Article();
        a9.setName("Agurknytt #43");
        a9.setStatus(s1);
        a9.setType(t4);
        a9.setJournalists(new HashSet<>(Arrays.asList(new Person(594L))));
        a9.setPhotographers(Collections.<Person>emptySet());
        a9.setContent(
                "<h1>Mora mi</h1><h4>Det er ikkje ofte 500 studentar str 15 minutt fr foredragstart. Men s er det ikkje kvar dag at administrerande direktr i Statoil er forelesar.<br></h4><p>Karrieredagane 2014, arrangert av Bindeleddet NTNU, har i r samla 140 ulike bedrifter for  skape kontakt mellom studentar ved NTNU og nringslivet. For  sparke det heile i gang var Helge Lund invitert for  halde opningsforedraget.</p><h3> Ein veit aldri kva ein kjem til  jobbe med</h3><p>Nr 500 studentar hadde forventingsfullt toga inn i auditoriet for  hyre direktren i Statoil fortelje om korleis karrieren hans blei til. </p><p> Det er nesten slik at eg m angre p  ikkje be om inngangspengar.</p><p>P sprsml om korleis han kvar dag orkar  st opp til ei ny rekkje ansvarsoppgver, svarar Helge Lund med  sitere mora si. </p><p> Mora mi kalla meg eit ugras. Det er litt som ei badeand: Ho kjem alltid opp att. Eg spr ogs: Trur eg p det vi gjer, p dit vi er p veg og p verdigrunnlaget for verksemda, seier Lund.</p><p><i>Han fortel at det er litt tilfeldig kvar ein endar opp, men at det viktigaste er  vere nyfiken og  utfordre seg sjlv.</i></p><p> Ein treng ikkje legge detaljerte framtidsplanar. Eg prvar  gjere det best mogleg der eg er no, og eg trur at det ogs gir best moglegheiter i framtida.</p>");
        a9.setNote("<p>Notat her</p>");
        a9.setPublication(p3);
        articleRepository.save(a9);

        return "ok";
    }

    @RequestMapping("/test2")
    public @ResponseBody List<Source> test22() {
        String baseQuery = "select distinct s from Source s";

        List<String> conditions = new ArrayList<>();
        Map<String, String> params = new HashMap<>();

        if (true) {
            conditions.add("s.name like :name");
            params.put("name", "%Mats%");
        }

        if (true) {
            conditions.add("s.email like :email");
            params.put("email", "mats.svensson@gmail.rart.com");
        }

        String conditionsString = StringUtils.collectionToDelimitedString(conditions, " AND ");
        String fullQuery;

        if (conditionsString.equals("")) {
            fullQuery = baseQuery;
        } else {
            fullQuery = baseQuery + " WHERE " + conditionsString;
        }

        logger.debug(fullQuery);

        TypedQuery<Source> query = entityManager.createQuery(fullQuery, Source.class);

        for (Map.Entry<String, String> e : params.entrySet()) {
            query.setParameter(e.getKey(), e.getValue());
        }

        //        query.setFirstResult(1);
        //        query.setMaxResults(2);

        return query.getResultList();
    }

    @RequestMapping("/createDisp")
    public @ResponseBody String createTestDisp() {

        Disposition disp1 = dispositionRepository.save(new Disposition(1L));
        Set<Page> pageSet = new HashSet<>();
        Page dummyPage1 = pageRepository.save(new Page());
        dummyPage1.setNote("Page_Disp");
        dummyPage1.setSection(sectionRepository.findOne(1L));
        dummyPage1 = pageRepository.save(dummyPage1);
        pageSet.add(dummyPage1);
        disp1.setPages(pageSet);

        Disposition save = dispositionRepository.save(disp1);
        return "ok";
    }

    @RequestMapping("/createMetadata")
    public @ResponseBody String createMetadata() {

        sectionRepository.save(new Section("Kultur"));
        sectionRepository.save(new Section("Debatt"));
        sectionRepository.save(new Section("Nyhet"));
        sectionRepository.save(new Section("Sport"));
        sectionRepository.save(new Section("Forbruker"));
        sectionRepository.save(new Section("Reportasje"));
        sectionRepository.save(new Section("Spit"));
        sectionRepository.save(new Section("Annet"));

        articleTypeRepository.save(new ArticleType("Anmeldelse", ""));
        articleTypeRepository.save(new ArticleType("Nyhetsartikkel", ""));
        articleTypeRepository.save(new ArticleType("Kulturartikkel", ""));
        articleTypeRepository.save(new ArticleType("Kulturtegn", ""));
        articleTypeRepository.save(new ArticleType("Reportasje", ""));

        articleStatusRepository.save(new ArticleStatus("Ukjent", "#fff"));
        articleStatusRepository.save(new ArticleStatus("Planlagt", "#eee"));
        articleStatusRepository.save(new ArticleStatus("Skrives", "#aaf"));
        articleStatusRepository.save(new ArticleStatus("Korrektur", "#faa"));
        articleStatusRepository.save(new ArticleStatus("Deskes", "#afa"));
        articleStatusRepository.save(new ArticleStatus("Publisert", "#0f0"));

        return "created sections, types and statuses";
    }
}