From fd5bc54eeec3dc78bf9dc9b25890cc6e31802e10 Mon Sep 17 00:00:00 2001 From: Thomas Peetz Date: Sun, 30 Mar 2025 15:57:09 +0200 Subject: [PATCH] import repositories kontor-java and kontor-ee --- java-ee/ComicsImpl/build.gradle | 5 + .../config/checkstyle/checkstyle.xml | 192 +++++++++ .../config/checkstyle/checkstyle.xsl | 179 ++++++++ .../ComicsImpl/config/findbugs/findbugs.xml | 15 + .../java/com/peetz/comics/dal/ArtistDao.java | 19 + .../java/com/peetz/comics/dal/ArtistImpl.java | 45 ++ .../java/com/peetz/comics/dal/ComicDao.java | 23 ++ .../java/com/peetz/comics/dal/ComicImpl.java | 62 +++ .../com/peetz/comics/entity/ArtistEntity.java | 69 ++++ .../com/peetz/comics/entity/ComicEntity.java | 90 ++++ .../com/peetz/comics/entity/IssueEntity.java | 80 ++++ .../peetz/comics/entity/PublisherEntity.java | 48 +++ .../peetz/comics/entity/StoryArcEntity.java | 56 +++ .../com/peetz/comics/entity/VolumeEntity.java | 37 ++ .../peetz/comics/service/ComicService.java | 34 ++ .../comics/service/ComicServiceImpl.java | 92 +++++ .../peetz/comics/service/package-info.java | 8 + .../comics/service/ComicServiceImplTest.java | 195 +++++++++ java-ee/ComicsWeb/build.gradle | 7 + .../java/com/peetz/comics/view/ComicView.java | 36 ++ .../ComicsWeb/src/main/webapp/artistAdd.jsp | 64 +++ .../ComicsWeb/src/main/webapp/artistEdit.jsp | 66 +++ .../ComicsWeb/src/main/webapp/artistList.jsp | 95 +++++ .../ComicsWeb/src/main/webapp/comicAdd.jsp | 67 +++ .../ComicsWeb/src/main/webapp/comicEdit.jsp | 90 ++++ .../ComicsWeb/src/main/webapp/comicList.jsp | 99 +++++ .../ComicsWeb/src/main/webapp/comics.xhtml | 51 +++ java-ee/ComicsWeb/src/main/webapp/index.jsp | 35 ++ .../ComicsWeb/src/main/webapp/issueAdd.jsp | 67 +++ .../ComicsWeb/src/main/webapp/issueEdit.jsp | 66 +++ .../src/main/webapp/publisherAdd.jsp | 64 +++ .../src/main/webapp/publisherEdit.jsp | 66 +++ .../src/main/webapp/publisherList.jsp | 95 +++++ java-ee/DVDs.csv | 391 ++++++++++++++++++ java-ee/Jenkinsfile | 15 + java-ee/KontorApp/build.gradle | 19 + .../main/java/com/ibtp/kontor/KontorApp.java | 23 ++ .../main/java/com/ibtp/kontor/KontorGUI.java | 69 ++++ .../com/ibtp/kontor/comics/dal/ArtistDao.java | 26 ++ .../ibtp/kontor/comics/dal/ArtistImpl.java | 67 +++ .../com/ibtp/kontor/comics/dal/ComicDao.java | 26 ++ .../com/ibtp/kontor/comics/dal/ComicImpl.java | 65 +++ .../com/ibtp/kontor/comics/dal/IssueDao.java | 23 ++ .../com/ibtp/kontor/comics/dal/IssueImpl.java | 57 +++ .../ibtp/kontor/comics/dal/PublisherDao.java | 26 ++ .../ibtp/kontor/comics/dal/PublisherImpl.java | 62 +++ .../ibtp/kontor/comics/dal/StoryArcDao.java | 24 ++ .../ibtp/kontor/comics/dal/StoryArcImpl.java | 55 +++ .../com/ibtp/kontor/comics/dal/VolumeDao.java | 24 ++ .../ibtp/kontor/comics/dal/VolumeImpl.java | 57 +++ .../kontor/comics/entity/ArtistEntity.java | 72 ++++ .../kontor/comics/entity/ComicEntity.java | 81 ++++ .../kontor/comics/entity/IssueEntity.java | 75 ++++ .../kontor/comics/entity/PublisherEntity.java | 47 +++ .../kontor/comics/entity/StoryArcEntity.java | 48 +++ .../kontor/comics/entity/VolumeEntity.java | 40 ++ .../ibtp/kontor/comics/view/ComicsMenu.java | 13 + .../java/com/ibtp/kontor/dal/BaseImpl.java | 21 + .../java/com/ibtp/kontor/dal/Database.java | 11 + .../com/ibtp/kontor/dal/DatabaseManager.java | 23 ++ .../com/ibtp/kontor/dal/LocalDatabase.java | 103 +++++ .../ibtp/kontor/library/dal/ArticleDao.java | 23 ++ .../ibtp/kontor/library/dal/ArticleImpl.java | 64 +++ .../ibtp/kontor/library/dal/AuthorDao.java | 25 ++ .../ibtp/kontor/library/dal/AuthorImpl.java | 65 +++ .../com/ibtp/kontor/library/dal/BookDao.java | 22 + .../com/ibtp/kontor/library/dal/BookImpl.java | 38 ++ .../com/ibtp/kontor/library/dal/FileDao.java | 22 + .../com/ibtp/kontor/library/dal/FileImpl.java | 38 ++ .../com/ibtp/kontor/library/dal/TitleDao.java | 22 + .../ibtp/kontor/library/dal/TitleImpl.java | 38 ++ .../kontor/library/entity/ArticleEntity.java | 56 +++ .../kontor/library/entity/AuthorEntity.java | 62 +++ .../kontor/library/entity/BookEntity.java | 96 +++++ .../kontor/library/entity/FileEntity.java | 41 ++ .../kontor/library/entity/TitleEntity.java | 27 ++ .../ibtp/kontor/library/view/LibraryMenu.java | 13 + .../kontor/tradingcards/dal/BaseSetDao.java | 22 + .../kontor/tradingcards/dal/BaseSetImpl.java | 51 +++ .../kontor/tradingcards/dal/InsertDao.java | 22 + .../kontor/tradingcards/dal/InsertImpl.java | 38 ++ .../tradingcards/dal/ManufacturerDao.java | 29 ++ .../tradingcards/dal/ManufacturerImpl.java | 65 +++ .../tradingcards/dal/ParallelSetDao.java | 22 + .../tradingcards/dal/ParallelSetImpl.java | 38 ++ .../kontor/tradingcards/dal/PlayerDao.java | 24 ++ .../kontor/tradingcards/dal/PlayerImpl.java | 43 ++ .../kontor/tradingcards/dal/PositionDao.java | 26 ++ .../kontor/tradingcards/dal/PositionImpl.java | 64 +++ .../kontor/tradingcards/dal/SportCardDao.java | 22 + .../tradingcards/dal/SportCardImpl.java | 38 ++ .../kontor/tradingcards/dal/SportDao.java | 26 ++ .../kontor/tradingcards/dal/SportImpl.java | 64 +++ .../ibtp/kontor/tradingcards/dal/TeamDao.java | 26 ++ .../kontor/tradingcards/dal/TeamImpl.java | 66 +++ .../tradingcards/entity/BaseSetEntity.java | 67 +++ .../tradingcards/entity/InsertEntity.java | 74 ++++ .../entity/ManufacturerEntity.java | 78 ++++ .../entity/ParallelSetEntity.java | 53 +++ .../tradingcards/entity/PlayerEntity.java | 46 +++ .../tradingcards/entity/PositionEntity.java | 56 +++ .../tradingcards/entity/SportCardEntity.java | 68 +++ .../tradingcards/entity/SportEntity.java | 75 ++++ .../tradingcards/entity/TeamEntity.java | 48 +++ .../tradingcards/view/TradingCardsMenu.java | 13 + .../main/resources/META-INF/persistence.xml | 39 ++ .../KontorApp/src/main/resources/logback.xml | 40 ++ .../ibtp/kontor/comics/CollectionTest.java | 41 ++ .../kontor/comics/dal/ArtistImplTest.java | 50 +++ .../ibtp/kontor/comics/dal/ComicImplTest.java | 54 +++ .../ibtp/kontor/comics/dal/IssueImplTest.java | 62 +++ .../kontor/comics/dal/PublisherImplTest.java | 50 +++ .../kontor/comics/dal/StoryArcImplTest.java | 55 +++ .../kontor/comics/dal/VolumeImplTest.java | 67 +++ .../ibtp/kontor/dal/DataAccessLayerTest.java | 62 +++ .../ibtp/kontor/library/BookshelfTest.java | 22 + .../kontor/library/dal/ArticleImplTest.java | 41 ++ .../kontor/library/dal/AuthorImplTest.java | 52 +++ .../ibtp/kontor/library/dal/BookImplTest.java | 27 ++ .../ibtp/kontor/library/dal/FileImplTest.java | 27 ++ .../kontor/library/dal/TitleImplTest.java | 27 ++ .../kontor/tradingcards/CollectionTest.java | 167 ++++++++ .../tradingcards/dal/BaseSetImplTest.java | 27 ++ .../tradingcards/dal/InsertImplTest.java | 28 ++ .../dal/ManufacturerImplTest.java | 52 +++ .../tradingcards/dal/ParallelSetImplTest.java | 27 ++ .../tradingcards/dal/PlayerImplTest.java | 27 ++ .../tradingcards/dal/PositionImplTest.java | 42 ++ .../tradingcards/dal/SportCardImplTest.java | 27 ++ .../tradingcards/dal/SportImplTest.java | 41 ++ .../kontor/tradingcards/dal/TeamImplTest.java | 41 ++ .../ibtp/kontor/util/LocalTestDatabase.java | 110 +++++ .../test/resources/META-INF/persistence.xml | 39 ++ .../KontorApp/src/test/resources/logback.xml | 41 ++ java-ee/KontorEJB/build.gradle | 12 + .../java/com/ibtp/kontor/ejb/Controller.java | 62 +++ .../java/com/ibtp/kontor/ejb/Property.java | 37 ++ .../com/ibtp/kontor/ejb/PropertyManager.java | 28 ++ java-ee/KontorImpl/build.gradle | 5 + .../config/checkstyle/checkstyle.xml | 192 +++++++++ .../config/checkstyle/checkstyle.xsl | 179 ++++++++ .../KontorImpl/config/findbugs/findbugs.xml | 15 + .../com/peetz/kontor/dal/KontorUserDao.java | 16 + .../com/peetz/kontor/dal/KontorUserImpl.java | 53 +++ .../peetz/kontor/entity/KontorUserEntity.java | 62 +++ .../peetz/kontor/service/package-info.java | 8 + java-ee/KontorWeb/build.gradle | 11 + .../com/peetz/kontor/data/ExportComics.java | 88 ++++ .../com/peetz/kontor/data/ExportLibrary.java | 100 +++++ .../com/peetz/kontor/data/ExportMedien.java | 75 ++++ .../peetz/kontor/data/ExportTradingCards.java | 175 ++++++++ .../com/peetz/kontor/data/FileExport.java | 64 +++ .../com/peetz/kontor/data/FileImport.java | 72 ++++ .../com/peetz/kontor/data/ImportComics.java | 81 ++++ .../com/peetz/kontor/data/ImportLibrary.java | 88 ++++ .../com/peetz/kontor/data/ImportMedien.java | 91 ++++ .../peetz/kontor/data/ImportTradingCards.java | 52 +++ .../main/resources/META-INF/persistence.xml | 51 +++ .../src/main/webapp/WEB-INF/faces-config.xml | 77 ++++ .../src/main/webapp/WEB-INF/glassfish-web.xml | 7 + .../KontorWeb/src/main/webapp/WEB-INF/web.xml | 22 + .../KontorWeb/src/main/webapp/comics.xhtml | 39 ++ .../KontorWeb/src/main/webapp/css/store.css | 145 +++++++ java-ee/KontorWeb/src/main/webapp/index.xhtml | 48 +++ .../src/main/webapp/kontorTemplate.xhtml | 44 ++ .../KontorWeb/src/main/webapp/library.xhtml | 39 ++ .../KontorWeb/src/main/webapp/medien.xhtml | 39 ++ .../main/webapp/resources/css/cssLayout.css | 71 ++++ .../src/main/webapp/resources/css/default.css | 29 ++ java-ee/KontorWeb/src/main/webapp/seite.html | 17 + java-ee/KontorWeb/src/main/webapp/sport.xhtml | 40 ++ .../src/main/webapp/sport/sportAdd.xhtml | 39 ++ .../src/main/webapp/sport/sportDetails.xhtml | 39 ++ .../src/main/webapp/tradingcards.xhtml | 40 ++ java-ee/LibraryImpl/build.gradle | 5 + .../config/checkstyle/checkstyle.xml | 192 +++++++++ .../config/checkstyle/checkstyle.xsl | 179 ++++++++ .../LibraryImpl/config/findbugs/findbugs.xml | 15 + .../com/peetz/library/dal/ArticleDao.java | 25 ++ .../java/com/peetz/library/dal/BookDao.java | 15 + .../com/peetz/library/dal/BookshelfDao.java | 22 + .../java/com/peetz/library/dal/FileDao.java | 15 + .../com/peetz/library/dal/MagazineDao.java | 15 + .../com/peetz/library/dal/ShelfObjectDao.java | 15 + .../com/peetz/library/dal/ShelfboardDao.java | 15 + .../com/peetz/library/dal/package-info.java | 8 + .../peetz/library/entity/ArticleEntity.java | 87 ++++ .../com/peetz/library/entity/BookEntity.java | 93 +++++ .../peetz/library/entity/BookshelfEntity.java | 53 +++ .../com/peetz/library/entity/FileEntity.java | 49 +++ .../peetz/library/entity/MagazineEntity.java | 49 +++ .../library/entity/ShelfObjectEntity.java | 32 ++ .../library/entity/ShelfboardEntity.java | 57 +++ .../peetz/library/entity/package-info.java | 8 + .../peetz/library/service/LibraryService.java | 28 ++ .../library/service/LibraryServiceImpl.java | 64 +++ .../peetz/library/service/package-info.java | 8 + java-ee/LibraryWeb/build.gradle | 7 + .../com/peetz/library/view/LibraryView.java | 42 ++ java-ee/LibraryWeb/src/main/webapp/index.jsp | 33 ++ .../src/main/webapp/jsp/articleAdd.jsp | 67 +++ .../src/main/webapp/jsp/articleEdit.jsp | 69 ++++ .../src/main/webapp/jsp/articleList.jsp | 90 ++++ .../src/main/webapp/jsp/boardAdd.jsp | 68 +++ .../src/main/webapp/jsp/boardEdit.jsp | 67 +++ .../src/main/webapp/jsp/bookAdd.jsp | 67 +++ .../src/main/webapp/jsp/bookEdit.jsp | 85 ++++ .../src/main/webapp/jsp/bookList.jsp | 33 ++ .../LibraryWeb/src/main/webapp/jsp/index.jsp | 58 +++ .../src/main/webapp/jsp/shelfAdd.jsp | 67 +++ .../src/main/webapp/jsp/shelfEdit.jsp | 92 +++++ .../src/main/webapp/jsp/shelfList.jsp | 91 ++++ java-ee/MedienImpl/build.gradle | 5 + .../config/checkstyle/checkstyle.xml | 192 +++++++++ .../config/checkstyle/checkstyle.xsl | 179 ++++++++ .../MedienImpl/config/findbugs/findbugs.xml | 15 + .../com/peetz/medien/dal/package-info.java | 8 + .../peetz/medien/entity/AudioCDEntity.java | 91 ++++ .../com/peetz/medien/entity/BoxSetEntity.java | 43 ++ .../com/peetz/medien/entity/FilmEntity.java | 50 +++ .../com/peetz/medien/entity/package-info.java | 8 + .../peetz/medien/service/MedienService.java | 22 + .../medien/service/MedienServiceImpl.java | 75 ++++ .../peetz/medien/service/package-info.java | 8 + java-ee/MedienWeb/build.gradle | 7 + .../com/peetz/medien/view/MedienView.java | 36 ++ java-ee/MedienWeb/src/main/webapp/index.jsp | 33 ++ .../MedienWeb/src/main/webapp/jsp/cdAdd.jsp | 75 ++++ .../MedienWeb/src/main/webapp/jsp/cdEdit.jsp | 75 ++++ .../MedienWeb/src/main/webapp/jsp/cdList.jsp | 94 +++++ .../MedienWeb/src/main/webapp/jsp/dvdAdd.jsp | 67 +++ .../MedienWeb/src/main/webapp/jsp/dvdEdit.jsp | 69 ++++ .../MedienWeb/src/main/webapp/jsp/dvdList.jsp | 90 ++++ .../MedienWeb/src/main/webapp/jsp/index.jsp | 58 +++ java-ee/README.md | 2 + java-ee/TradingCardsImpl/build.gradle | 5 + .../config/checkstyle/checkstyle.xml | 192 +++++++++ .../config/checkstyle/checkstyle.xsl | 179 ++++++++ .../config/findbugs/findbugs.xml | 15 + .../tradingcards/dal/ManufacturerDao.java | 31 ++ .../tradingcards/dal/ManufacturerImpl.java | 67 +++ .../com/peetz/tradingcards/dal/SportDao.java | 28 ++ .../com/peetz/tradingcards/dal/SportImpl.java | 58 +++ .../tradingcards/entity/BaseSetEntity.java | 67 +++ .../tradingcards/entity/InsertEntity.java | 74 ++++ .../entity/ManufacturerEntity.java | 74 ++++ .../entity/ParallelSetEntity.java | 53 +++ .../tradingcards/entity/PlayerEntity.java | 46 +++ .../tradingcards/entity/PositionEntity.java | 53 +++ .../tradingcards/entity/SportCardEntity.java | 68 +++ .../tradingcards/entity/SportEntity.java | 64 +++ .../peetz/tradingcards/entity/TeamEntity.java | 42 ++ .../tradingcards/service/SportService.java | 24 ++ .../service/SportServiceImpl.java | 63 +++ .../service/TradingcardService.java | 28 ++ .../service/TradingcardServiceImpl.java | 75 ++++ .../tradingcards/service/package-info.java | 5 + .../dal/ManufacturerImplTest.java | 147 +++++++ java-ee/TradingCardsWeb/build.gradle | 7 + .../peetz/tradingcards/view/SportView.java | 52 +++ .../tradingcards/view/TradingCardsView.java | 36 ++ .../TradingCardsWeb/src/main/webapp/index.jsp | 33 ++ java-ee/build.gradle | 69 ++++ java-ee/comics.xml | 63 +++ java-ee/config/checkstyle/checkstyle.xml | 192 +++++++++ java-ee/config/checkstyle/checkstyle.xsl | 179 ++++++++ java-ee/config/findbugs/findbugs.xml | 15 + java-ee/gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 54208 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 + java-ee/gradlew | 172 ++++++++ java-ee/gradlew.bat | 84 ++++ java-ee/settings.gradle | 13 + java/README.md | 2 + java/build.gradle | 87 ++++ java/comics.xml | 63 +++ java/config/checkstyle/checkstyle.xml | 192 +++++++++ java/config/checkstyle/checkstyle.xsl | 179 ++++++++ java/config/findbugs/findbugs.xml | 15 + java/gradle.properties | 2 + java/gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 59203 bytes java/gradle/wrapper/gradle-wrapper.properties | 5 + java/gradlew | 185 +++++++++ java/gradlew.bat | 89 ++++ java/settings.gradle | 1 + .../main/java/com/ibtp/kontor/Database.java | 46 +++ .../main/java/com/ibtp/kontor/DumpComics.java | 51 +++ .../main/java/com/ibtp/kontor/KontorApp.java | 23 ++ .../main/java/com/ibtp/kontor/KontorGUI.java | 69 ++++ .../com/ibtp/kontor/comics/dal/ArtistDao.java | 26 ++ .../ibtp/kontor/comics/dal/ArtistImpl.java | 68 +++ .../com/ibtp/kontor/comics/dal/ComicDao.java | 26 ++ .../com/ibtp/kontor/comics/dal/ComicImpl.java | 65 +++ .../com/ibtp/kontor/comics/dal/IssueDao.java | 23 ++ .../com/ibtp/kontor/comics/dal/IssueImpl.java | 57 +++ .../ibtp/kontor/comics/dal/PublisherDao.java | 26 ++ .../ibtp/kontor/comics/dal/PublisherImpl.java | 62 +++ .../ibtp/kontor/comics/dal/StoryArcDao.java | 24 ++ .../ibtp/kontor/comics/dal/StoryArcImpl.java | 55 +++ .../com/ibtp/kontor/comics/dal/VolumeDao.java | 24 ++ .../ibtp/kontor/comics/dal/VolumeImpl.java | 57 +++ .../com/ibtp/kontor/comics/entity/Artist.java | 46 +++ .../kontor/comics/entity/ArtistEntity.java | 72 ++++ .../com/ibtp/kontor/comics/entity/Comic.java | 98 +++++ .../kontor/comics/entity/ComicEntity.java | 81 ++++ .../com/ibtp/kontor/comics/entity/Issue.java | 66 +++ .../kontor/comics/entity/IssueEntity.java | 75 ++++ .../ibtp/kontor/comics/entity/Publisher.java | 60 +++ .../kontor/comics/entity/PublisherEntity.java | 47 +++ .../ibtp/kontor/comics/entity/StoryArc.java | 59 +++ .../kontor/comics/entity/StoryArcEntity.java | 48 +++ .../kontor/comics/entity/TradePaperback.java | 56 +++ .../com/ibtp/kontor/comics/entity/Volume.java | 70 ++++ .../kontor/comics/entity/VolumeEntity.java | 40 ++ .../ibtp/kontor/comics/view/ComicsMenu.java | 13 + .../java/com/ibtp/kontor/dal/BaseImpl.java | 21 + .../java/com/ibtp/kontor/dal/Database.java | 11 + .../com/ibtp/kontor/dal/DatabaseManager.java | 23 ++ .../com/ibtp/kontor/dal/LocalDatabase.java | 104 +++++ .../ibtp/kontor/library/dal/ArticleDao.java | 23 ++ .../ibtp/kontor/library/dal/ArticleImpl.java | 64 +++ .../ibtp/kontor/library/dal/AuthorDao.java | 25 ++ .../ibtp/kontor/library/dal/AuthorImpl.java | 65 +++ .../com/ibtp/kontor/library/dal/BookDao.java | 22 + .../com/ibtp/kontor/library/dal/BookImpl.java | 38 ++ .../com/ibtp/kontor/library/dal/FileDao.java | 22 + .../com/ibtp/kontor/library/dal/FileImpl.java | 38 ++ .../com/ibtp/kontor/library/dal/TitleDao.java | 22 + .../ibtp/kontor/library/dal/TitleImpl.java | 38 ++ .../kontor/library/entity/ArticleEntity.java | 56 +++ .../kontor/library/entity/AuthorEntity.java | 62 +++ .../kontor/library/entity/BookEntity.java | 96 +++++ .../kontor/library/entity/FileEntity.java | 41 ++ .../kontor/library/entity/TitleEntity.java | 27 ++ .../ibtp/kontor/library/view/LibraryMenu.java | 13 + .../kontor/tradingcards/dal/BaseSetDao.java | 22 + .../kontor/tradingcards/dal/BaseSetImpl.java | 51 +++ .../kontor/tradingcards/dal/InsertDao.java | 22 + .../kontor/tradingcards/dal/InsertImpl.java | 38 ++ .../tradingcards/dal/ManufacturerDao.java | 29 ++ .../tradingcards/dal/ManufacturerImpl.java | 65 +++ .../tradingcards/dal/ParallelSetDao.java | 22 + .../tradingcards/dal/ParallelSetImpl.java | 38 ++ .../kontor/tradingcards/dal/PlayerDao.java | 24 ++ .../kontor/tradingcards/dal/PlayerImpl.java | 43 ++ .../kontor/tradingcards/dal/PositionDao.java | 26 ++ .../kontor/tradingcards/dal/PositionImpl.java | 65 +++ .../kontor/tradingcards/dal/SportCardDao.java | 22 + .../tradingcards/dal/SportCardImpl.java | 38 ++ .../kontor/tradingcards/dal/SportDao.java | 26 ++ .../kontor/tradingcards/dal/SportImpl.java | 64 +++ .../ibtp/kontor/tradingcards/dal/TeamDao.java | 26 ++ .../kontor/tradingcards/dal/TeamImpl.java | 66 +++ .../tradingcards/entity/BaseSetEntity.java | 67 +++ .../tradingcards/entity/InsertEntity.java | 74 ++++ .../entity/ManufacturerEntity.java | 78 ++++ .../entity/ParallelSetEntity.java | 53 +++ .../tradingcards/entity/PlayerEntity.java | 46 +++ .../tradingcards/entity/PositionEntity.java | 66 +++ .../tradingcards/entity/SportCardEntity.java | 68 +++ .../tradingcards/entity/SportEntity.java | 75 ++++ .../tradingcards/entity/TeamEntity.java | 48 +++ .../tradingcards/view/TradingCardsMenu.java | 13 + .../main/resources/META-INF/persistence.xml | 39 ++ java/src/main/resources/logback.xml | 40 ++ .../ibtp/kontor/comics/CollectionTest.java | 43 ++ .../kontor/comics/dal/ArtistImplTest.java | 65 +++ .../ibtp/kontor/comics/dal/ComicImplTest.java | 57 +++ .../ibtp/kontor/comics/dal/IssueImplTest.java | 64 +++ .../kontor/comics/dal/PublisherImplTest.java | 56 +++ .../kontor/comics/dal/StoryArcImplTest.java | 63 +++ .../kontor/comics/dal/VolumeImplTest.java | 72 ++++ .../ibtp/kontor/dal/DataAccessLayerTest.java | 63 +++ .../ibtp/kontor/library/BookshelfTest.java | 23 ++ .../kontor/library/dal/ArticleImplTest.java | 57 +++ .../kontor/library/dal/AuthorImplTest.java | 56 +++ .../ibtp/kontor/library/dal/BookImplTest.java | 28 ++ .../ibtp/kontor/library/dal/FileImplTest.java | 28 ++ .../kontor/library/dal/TitleImplTest.java | 28 ++ .../kontor/tradingcards/CollectionTest.java | 168 ++++++++ .../tradingcards/dal/BaseSetImplTest.java | 28 ++ .../tradingcards/dal/InsertImplTest.java | 29 ++ .../dal/ManufacturerImplTest.java | 57 +++ .../tradingcards/dal/ParallelSetImplTest.java | 28 ++ .../tradingcards/dal/PlayerImplTest.java | 28 ++ .../tradingcards/dal/PositionImplTest.java | 44 ++ .../tradingcards/dal/SportCardImplTest.java | 28 ++ .../tradingcards/dal/SportImplTest.java | 44 ++ .../kontor/tradingcards/dal/TeamImplTest.java | 44 ++ .../ibtp/kontor/util/LocalTestDatabase.java | 110 +++++ .../test/resources/META-INF/persistence.xml | 39 ++ java/src/test/resources/logback.xml | 41 ++ java/tysc-20041010-1819.sql | 168 ++++++++ springboot/docker-compose.yml | 10 +- 393 files changed, 21181 insertions(+), 5 deletions(-) create mode 100644 java-ee/ComicsImpl/build.gradle create mode 100644 java-ee/ComicsImpl/config/checkstyle/checkstyle.xml create mode 100644 java-ee/ComicsImpl/config/checkstyle/checkstyle.xsl create mode 100644 java-ee/ComicsImpl/config/findbugs/findbugs.xml create mode 100644 java-ee/ComicsImpl/src/main/java/com/peetz/comics/dal/ArtistDao.java create mode 100644 java-ee/ComicsImpl/src/main/java/com/peetz/comics/dal/ArtistImpl.java create mode 100644 java-ee/ComicsImpl/src/main/java/com/peetz/comics/dal/ComicDao.java create mode 100644 java-ee/ComicsImpl/src/main/java/com/peetz/comics/dal/ComicImpl.java create mode 100644 java-ee/ComicsImpl/src/main/java/com/peetz/comics/entity/ArtistEntity.java create mode 100644 java-ee/ComicsImpl/src/main/java/com/peetz/comics/entity/ComicEntity.java create mode 100644 java-ee/ComicsImpl/src/main/java/com/peetz/comics/entity/IssueEntity.java create mode 100644 java-ee/ComicsImpl/src/main/java/com/peetz/comics/entity/PublisherEntity.java create mode 100644 java-ee/ComicsImpl/src/main/java/com/peetz/comics/entity/StoryArcEntity.java create mode 100644 java-ee/ComicsImpl/src/main/java/com/peetz/comics/entity/VolumeEntity.java create mode 100644 java-ee/ComicsImpl/src/main/java/com/peetz/comics/service/ComicService.java create mode 100644 java-ee/ComicsImpl/src/main/java/com/peetz/comics/service/ComicServiceImpl.java create mode 100644 java-ee/ComicsImpl/src/main/java/com/peetz/comics/service/package-info.java create mode 100644 java-ee/ComicsImpl/src/test/java/com/peetz/comics/service/ComicServiceImplTest.java create mode 100644 java-ee/ComicsWeb/build.gradle create mode 100644 java-ee/ComicsWeb/src/main/java/com/peetz/comics/view/ComicView.java create mode 100644 java-ee/ComicsWeb/src/main/webapp/artistAdd.jsp create mode 100644 java-ee/ComicsWeb/src/main/webapp/artistEdit.jsp create mode 100644 java-ee/ComicsWeb/src/main/webapp/artistList.jsp create mode 100644 java-ee/ComicsWeb/src/main/webapp/comicAdd.jsp create mode 100644 java-ee/ComicsWeb/src/main/webapp/comicEdit.jsp create mode 100644 java-ee/ComicsWeb/src/main/webapp/comicList.jsp create mode 100644 java-ee/ComicsWeb/src/main/webapp/comics.xhtml create mode 100644 java-ee/ComicsWeb/src/main/webapp/index.jsp create mode 100644 java-ee/ComicsWeb/src/main/webapp/issueAdd.jsp create mode 100644 java-ee/ComicsWeb/src/main/webapp/issueEdit.jsp create mode 100644 java-ee/ComicsWeb/src/main/webapp/publisherAdd.jsp create mode 100644 java-ee/ComicsWeb/src/main/webapp/publisherEdit.jsp create mode 100644 java-ee/ComicsWeb/src/main/webapp/publisherList.jsp create mode 100644 java-ee/DVDs.csv create mode 100644 java-ee/Jenkinsfile create mode 100644 java-ee/KontorApp/build.gradle create mode 100644 java-ee/KontorApp/src/main/java/com/ibtp/kontor/KontorApp.java create mode 100644 java-ee/KontorApp/src/main/java/com/ibtp/kontor/KontorGUI.java create mode 100644 java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/dal/ArtistDao.java create mode 100644 java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/dal/ArtistImpl.java create mode 100644 java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/dal/ComicDao.java create mode 100644 java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/dal/ComicImpl.java create mode 100644 java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/dal/IssueDao.java create mode 100644 java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/dal/IssueImpl.java create mode 100644 java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/dal/PublisherDao.java create mode 100644 java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/dal/PublisherImpl.java create mode 100644 java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/dal/StoryArcDao.java create mode 100644 java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/dal/StoryArcImpl.java create mode 100644 java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/dal/VolumeDao.java create mode 100644 java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/dal/VolumeImpl.java create mode 100644 java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/entity/ArtistEntity.java create mode 100644 java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/entity/ComicEntity.java create mode 100644 java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/entity/IssueEntity.java create mode 100644 java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/entity/PublisherEntity.java create mode 100644 java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/entity/StoryArcEntity.java create mode 100644 java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/entity/VolumeEntity.java create mode 100644 java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/view/ComicsMenu.java create mode 100644 java-ee/KontorApp/src/main/java/com/ibtp/kontor/dal/BaseImpl.java create mode 100644 java-ee/KontorApp/src/main/java/com/ibtp/kontor/dal/Database.java create mode 100644 java-ee/KontorApp/src/main/java/com/ibtp/kontor/dal/DatabaseManager.java create mode 100644 java-ee/KontorApp/src/main/java/com/ibtp/kontor/dal/LocalDatabase.java create mode 100644 java-ee/KontorApp/src/main/java/com/ibtp/kontor/library/dal/ArticleDao.java create mode 100644 java-ee/KontorApp/src/main/java/com/ibtp/kontor/library/dal/ArticleImpl.java create mode 100644 java-ee/KontorApp/src/main/java/com/ibtp/kontor/library/dal/AuthorDao.java create mode 100644 java-ee/KontorApp/src/main/java/com/ibtp/kontor/library/dal/AuthorImpl.java create mode 100644 java-ee/KontorApp/src/main/java/com/ibtp/kontor/library/dal/BookDao.java create mode 100644 java-ee/KontorApp/src/main/java/com/ibtp/kontor/library/dal/BookImpl.java create mode 100644 java-ee/KontorApp/src/main/java/com/ibtp/kontor/library/dal/FileDao.java create mode 100644 java-ee/KontorApp/src/main/java/com/ibtp/kontor/library/dal/FileImpl.java create mode 100644 java-ee/KontorApp/src/main/java/com/ibtp/kontor/library/dal/TitleDao.java create mode 100644 java-ee/KontorApp/src/main/java/com/ibtp/kontor/library/dal/TitleImpl.java create mode 100644 java-ee/KontorApp/src/main/java/com/ibtp/kontor/library/entity/ArticleEntity.java create mode 100644 java-ee/KontorApp/src/main/java/com/ibtp/kontor/library/entity/AuthorEntity.java create mode 100644 java-ee/KontorApp/src/main/java/com/ibtp/kontor/library/entity/BookEntity.java create mode 100644 java-ee/KontorApp/src/main/java/com/ibtp/kontor/library/entity/FileEntity.java create mode 100644 java-ee/KontorApp/src/main/java/com/ibtp/kontor/library/entity/TitleEntity.java create mode 100644 java-ee/KontorApp/src/main/java/com/ibtp/kontor/library/view/LibraryMenu.java create mode 100644 java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/dal/BaseSetDao.java create mode 100644 java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/dal/BaseSetImpl.java create mode 100644 java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/dal/InsertDao.java create mode 100644 java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/dal/InsertImpl.java create mode 100644 java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/dal/ManufacturerDao.java create mode 100644 java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/dal/ManufacturerImpl.java create mode 100644 java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/dal/ParallelSetDao.java create mode 100644 java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/dal/ParallelSetImpl.java create mode 100644 java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/dal/PlayerDao.java create mode 100644 java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/dal/PlayerImpl.java create mode 100644 java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/dal/PositionDao.java create mode 100644 java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/dal/PositionImpl.java create mode 100644 java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/dal/SportCardDao.java create mode 100644 java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/dal/SportCardImpl.java create mode 100644 java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/dal/SportDao.java create mode 100644 java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/dal/SportImpl.java create mode 100644 java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/dal/TeamDao.java create mode 100644 java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/dal/TeamImpl.java create mode 100644 java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/entity/BaseSetEntity.java create mode 100644 java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/entity/InsertEntity.java create mode 100644 java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/entity/ManufacturerEntity.java create mode 100644 java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/entity/ParallelSetEntity.java create mode 100644 java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/entity/PlayerEntity.java create mode 100644 java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/entity/PositionEntity.java create mode 100644 java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/entity/SportCardEntity.java create mode 100644 java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/entity/SportEntity.java create mode 100644 java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/entity/TeamEntity.java create mode 100644 java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/view/TradingCardsMenu.java create mode 100644 java-ee/KontorApp/src/main/resources/META-INF/persistence.xml create mode 100644 java-ee/KontorApp/src/main/resources/logback.xml create mode 100644 java-ee/KontorApp/src/test/java/com/ibtp/kontor/comics/CollectionTest.java create mode 100644 java-ee/KontorApp/src/test/java/com/ibtp/kontor/comics/dal/ArtistImplTest.java create mode 100644 java-ee/KontorApp/src/test/java/com/ibtp/kontor/comics/dal/ComicImplTest.java create mode 100644 java-ee/KontorApp/src/test/java/com/ibtp/kontor/comics/dal/IssueImplTest.java create mode 100644 java-ee/KontorApp/src/test/java/com/ibtp/kontor/comics/dal/PublisherImplTest.java create mode 100644 java-ee/KontorApp/src/test/java/com/ibtp/kontor/comics/dal/StoryArcImplTest.java create mode 100644 java-ee/KontorApp/src/test/java/com/ibtp/kontor/comics/dal/VolumeImplTest.java create mode 100644 java-ee/KontorApp/src/test/java/com/ibtp/kontor/dal/DataAccessLayerTest.java create mode 100644 java-ee/KontorApp/src/test/java/com/ibtp/kontor/library/BookshelfTest.java create mode 100644 java-ee/KontorApp/src/test/java/com/ibtp/kontor/library/dal/ArticleImplTest.java create mode 100644 java-ee/KontorApp/src/test/java/com/ibtp/kontor/library/dal/AuthorImplTest.java create mode 100644 java-ee/KontorApp/src/test/java/com/ibtp/kontor/library/dal/BookImplTest.java create mode 100644 java-ee/KontorApp/src/test/java/com/ibtp/kontor/library/dal/FileImplTest.java create mode 100644 java-ee/KontorApp/src/test/java/com/ibtp/kontor/library/dal/TitleImplTest.java create mode 100644 java-ee/KontorApp/src/test/java/com/ibtp/kontor/tradingcards/CollectionTest.java create mode 100644 java-ee/KontorApp/src/test/java/com/ibtp/kontor/tradingcards/dal/BaseSetImplTest.java create mode 100644 java-ee/KontorApp/src/test/java/com/ibtp/kontor/tradingcards/dal/InsertImplTest.java create mode 100644 java-ee/KontorApp/src/test/java/com/ibtp/kontor/tradingcards/dal/ManufacturerImplTest.java create mode 100644 java-ee/KontorApp/src/test/java/com/ibtp/kontor/tradingcards/dal/ParallelSetImplTest.java create mode 100644 java-ee/KontorApp/src/test/java/com/ibtp/kontor/tradingcards/dal/PlayerImplTest.java create mode 100644 java-ee/KontorApp/src/test/java/com/ibtp/kontor/tradingcards/dal/PositionImplTest.java create mode 100644 java-ee/KontorApp/src/test/java/com/ibtp/kontor/tradingcards/dal/SportCardImplTest.java create mode 100644 java-ee/KontorApp/src/test/java/com/ibtp/kontor/tradingcards/dal/SportImplTest.java create mode 100644 java-ee/KontorApp/src/test/java/com/ibtp/kontor/tradingcards/dal/TeamImplTest.java create mode 100644 java-ee/KontorApp/src/test/java/com/ibtp/kontor/util/LocalTestDatabase.java create mode 100644 java-ee/KontorApp/src/test/resources/META-INF/persistence.xml create mode 100644 java-ee/KontorApp/src/test/resources/logback.xml create mode 100755 java-ee/KontorEJB/build.gradle create mode 100755 java-ee/KontorEJB/src/main/java/com/ibtp/kontor/ejb/Controller.java create mode 100755 java-ee/KontorEJB/src/main/java/com/ibtp/kontor/ejb/Property.java create mode 100755 java-ee/KontorEJB/src/main/java/com/ibtp/kontor/ejb/PropertyManager.java create mode 100644 java-ee/KontorImpl/build.gradle create mode 100644 java-ee/KontorImpl/config/checkstyle/checkstyle.xml create mode 100644 java-ee/KontorImpl/config/checkstyle/checkstyle.xsl create mode 100644 java-ee/KontorImpl/config/findbugs/findbugs.xml create mode 100644 java-ee/KontorImpl/src/main/java/com/peetz/kontor/dal/KontorUserDao.java create mode 100644 java-ee/KontorImpl/src/main/java/com/peetz/kontor/dal/KontorUserImpl.java create mode 100644 java-ee/KontorImpl/src/main/java/com/peetz/kontor/entity/KontorUserEntity.java create mode 100644 java-ee/KontorImpl/src/main/java/com/peetz/kontor/service/package-info.java create mode 100755 java-ee/KontorWeb/build.gradle create mode 100644 java-ee/KontorWeb/src/main/java/com/peetz/kontor/data/ExportComics.java create mode 100644 java-ee/KontorWeb/src/main/java/com/peetz/kontor/data/ExportLibrary.java create mode 100644 java-ee/KontorWeb/src/main/java/com/peetz/kontor/data/ExportMedien.java create mode 100644 java-ee/KontorWeb/src/main/java/com/peetz/kontor/data/ExportTradingCards.java create mode 100644 java-ee/KontorWeb/src/main/java/com/peetz/kontor/data/FileExport.java create mode 100644 java-ee/KontorWeb/src/main/java/com/peetz/kontor/data/FileImport.java create mode 100644 java-ee/KontorWeb/src/main/java/com/peetz/kontor/data/ImportComics.java create mode 100644 java-ee/KontorWeb/src/main/java/com/peetz/kontor/data/ImportLibrary.java create mode 100644 java-ee/KontorWeb/src/main/java/com/peetz/kontor/data/ImportMedien.java create mode 100644 java-ee/KontorWeb/src/main/java/com/peetz/kontor/data/ImportTradingCards.java create mode 100755 java-ee/KontorWeb/src/main/resources/META-INF/persistence.xml create mode 100644 java-ee/KontorWeb/src/main/webapp/WEB-INF/faces-config.xml create mode 100644 java-ee/KontorWeb/src/main/webapp/WEB-INF/glassfish-web.xml create mode 100644 java-ee/KontorWeb/src/main/webapp/WEB-INF/web.xml create mode 100644 java-ee/KontorWeb/src/main/webapp/comics.xhtml create mode 100755 java-ee/KontorWeb/src/main/webapp/css/store.css create mode 100755 java-ee/KontorWeb/src/main/webapp/index.xhtml create mode 100644 java-ee/KontorWeb/src/main/webapp/kontorTemplate.xhtml create mode 100644 java-ee/KontorWeb/src/main/webapp/library.xhtml create mode 100644 java-ee/KontorWeb/src/main/webapp/medien.xhtml create mode 100644 java-ee/KontorWeb/src/main/webapp/resources/css/cssLayout.css create mode 100644 java-ee/KontorWeb/src/main/webapp/resources/css/default.css create mode 100644 java-ee/KontorWeb/src/main/webapp/seite.html create mode 100644 java-ee/KontorWeb/src/main/webapp/sport.xhtml create mode 100644 java-ee/KontorWeb/src/main/webapp/sport/sportAdd.xhtml create mode 100644 java-ee/KontorWeb/src/main/webapp/sport/sportDetails.xhtml create mode 100644 java-ee/KontorWeb/src/main/webapp/tradingcards.xhtml create mode 100644 java-ee/LibraryImpl/build.gradle create mode 100644 java-ee/LibraryImpl/config/checkstyle/checkstyle.xml create mode 100644 java-ee/LibraryImpl/config/checkstyle/checkstyle.xsl create mode 100644 java-ee/LibraryImpl/config/findbugs/findbugs.xml create mode 100644 java-ee/LibraryImpl/src/main/java/com/peetz/library/dal/ArticleDao.java create mode 100644 java-ee/LibraryImpl/src/main/java/com/peetz/library/dal/BookDao.java create mode 100644 java-ee/LibraryImpl/src/main/java/com/peetz/library/dal/BookshelfDao.java create mode 100644 java-ee/LibraryImpl/src/main/java/com/peetz/library/dal/FileDao.java create mode 100644 java-ee/LibraryImpl/src/main/java/com/peetz/library/dal/MagazineDao.java create mode 100644 java-ee/LibraryImpl/src/main/java/com/peetz/library/dal/ShelfObjectDao.java create mode 100644 java-ee/LibraryImpl/src/main/java/com/peetz/library/dal/ShelfboardDao.java create mode 100644 java-ee/LibraryImpl/src/main/java/com/peetz/library/dal/package-info.java create mode 100644 java-ee/LibraryImpl/src/main/java/com/peetz/library/entity/ArticleEntity.java create mode 100644 java-ee/LibraryImpl/src/main/java/com/peetz/library/entity/BookEntity.java create mode 100644 java-ee/LibraryImpl/src/main/java/com/peetz/library/entity/BookshelfEntity.java create mode 100644 java-ee/LibraryImpl/src/main/java/com/peetz/library/entity/FileEntity.java create mode 100644 java-ee/LibraryImpl/src/main/java/com/peetz/library/entity/MagazineEntity.java create mode 100644 java-ee/LibraryImpl/src/main/java/com/peetz/library/entity/ShelfObjectEntity.java create mode 100644 java-ee/LibraryImpl/src/main/java/com/peetz/library/entity/ShelfboardEntity.java create mode 100644 java-ee/LibraryImpl/src/main/java/com/peetz/library/entity/package-info.java create mode 100644 java-ee/LibraryImpl/src/main/java/com/peetz/library/service/LibraryService.java create mode 100644 java-ee/LibraryImpl/src/main/java/com/peetz/library/service/LibraryServiceImpl.java create mode 100644 java-ee/LibraryImpl/src/main/java/com/peetz/library/service/package-info.java create mode 100644 java-ee/LibraryWeb/build.gradle create mode 100644 java-ee/LibraryWeb/src/main/java/com/peetz/library/view/LibraryView.java create mode 100644 java-ee/LibraryWeb/src/main/webapp/index.jsp create mode 100644 java-ee/LibraryWeb/src/main/webapp/jsp/articleAdd.jsp create mode 100644 java-ee/LibraryWeb/src/main/webapp/jsp/articleEdit.jsp create mode 100644 java-ee/LibraryWeb/src/main/webapp/jsp/articleList.jsp create mode 100644 java-ee/LibraryWeb/src/main/webapp/jsp/boardAdd.jsp create mode 100644 java-ee/LibraryWeb/src/main/webapp/jsp/boardEdit.jsp create mode 100644 java-ee/LibraryWeb/src/main/webapp/jsp/bookAdd.jsp create mode 100644 java-ee/LibraryWeb/src/main/webapp/jsp/bookEdit.jsp create mode 100644 java-ee/LibraryWeb/src/main/webapp/jsp/bookList.jsp create mode 100644 java-ee/LibraryWeb/src/main/webapp/jsp/index.jsp create mode 100644 java-ee/LibraryWeb/src/main/webapp/jsp/shelfAdd.jsp create mode 100644 java-ee/LibraryWeb/src/main/webapp/jsp/shelfEdit.jsp create mode 100644 java-ee/LibraryWeb/src/main/webapp/jsp/shelfList.jsp create mode 100644 java-ee/MedienImpl/build.gradle create mode 100644 java-ee/MedienImpl/config/checkstyle/checkstyle.xml create mode 100644 java-ee/MedienImpl/config/checkstyle/checkstyle.xsl create mode 100644 java-ee/MedienImpl/config/findbugs/findbugs.xml create mode 100644 java-ee/MedienImpl/src/main/java/com/peetz/medien/dal/package-info.java create mode 100644 java-ee/MedienImpl/src/main/java/com/peetz/medien/entity/AudioCDEntity.java create mode 100644 java-ee/MedienImpl/src/main/java/com/peetz/medien/entity/BoxSetEntity.java create mode 100644 java-ee/MedienImpl/src/main/java/com/peetz/medien/entity/FilmEntity.java create mode 100644 java-ee/MedienImpl/src/main/java/com/peetz/medien/entity/package-info.java create mode 100644 java-ee/MedienImpl/src/main/java/com/peetz/medien/service/MedienService.java create mode 100644 java-ee/MedienImpl/src/main/java/com/peetz/medien/service/MedienServiceImpl.java create mode 100644 java-ee/MedienImpl/src/main/java/com/peetz/medien/service/package-info.java create mode 100644 java-ee/MedienWeb/build.gradle create mode 100644 java-ee/MedienWeb/src/main/java/com/peetz/medien/view/MedienView.java create mode 100644 java-ee/MedienWeb/src/main/webapp/index.jsp create mode 100644 java-ee/MedienWeb/src/main/webapp/jsp/cdAdd.jsp create mode 100644 java-ee/MedienWeb/src/main/webapp/jsp/cdEdit.jsp create mode 100644 java-ee/MedienWeb/src/main/webapp/jsp/cdList.jsp create mode 100644 java-ee/MedienWeb/src/main/webapp/jsp/dvdAdd.jsp create mode 100644 java-ee/MedienWeb/src/main/webapp/jsp/dvdEdit.jsp create mode 100644 java-ee/MedienWeb/src/main/webapp/jsp/dvdList.jsp create mode 100644 java-ee/MedienWeb/src/main/webapp/jsp/index.jsp create mode 100644 java-ee/README.md create mode 100644 java-ee/TradingCardsImpl/build.gradle create mode 100644 java-ee/TradingCardsImpl/config/checkstyle/checkstyle.xml create mode 100644 java-ee/TradingCardsImpl/config/checkstyle/checkstyle.xsl create mode 100644 java-ee/TradingCardsImpl/config/findbugs/findbugs.xml create mode 100644 java-ee/TradingCardsImpl/src/main/java/com/peetz/tradingcards/dal/ManufacturerDao.java create mode 100644 java-ee/TradingCardsImpl/src/main/java/com/peetz/tradingcards/dal/ManufacturerImpl.java create mode 100644 java-ee/TradingCardsImpl/src/main/java/com/peetz/tradingcards/dal/SportDao.java create mode 100644 java-ee/TradingCardsImpl/src/main/java/com/peetz/tradingcards/dal/SportImpl.java create mode 100644 java-ee/TradingCardsImpl/src/main/java/com/peetz/tradingcards/entity/BaseSetEntity.java create mode 100644 java-ee/TradingCardsImpl/src/main/java/com/peetz/tradingcards/entity/InsertEntity.java create mode 100644 java-ee/TradingCardsImpl/src/main/java/com/peetz/tradingcards/entity/ManufacturerEntity.java create mode 100644 java-ee/TradingCardsImpl/src/main/java/com/peetz/tradingcards/entity/ParallelSetEntity.java create mode 100644 java-ee/TradingCardsImpl/src/main/java/com/peetz/tradingcards/entity/PlayerEntity.java create mode 100644 java-ee/TradingCardsImpl/src/main/java/com/peetz/tradingcards/entity/PositionEntity.java create mode 100644 java-ee/TradingCardsImpl/src/main/java/com/peetz/tradingcards/entity/SportCardEntity.java create mode 100644 java-ee/TradingCardsImpl/src/main/java/com/peetz/tradingcards/entity/SportEntity.java create mode 100644 java-ee/TradingCardsImpl/src/main/java/com/peetz/tradingcards/entity/TeamEntity.java create mode 100644 java-ee/TradingCardsImpl/src/main/java/com/peetz/tradingcards/service/SportService.java create mode 100644 java-ee/TradingCardsImpl/src/main/java/com/peetz/tradingcards/service/SportServiceImpl.java create mode 100644 java-ee/TradingCardsImpl/src/main/java/com/peetz/tradingcards/service/TradingcardService.java create mode 100644 java-ee/TradingCardsImpl/src/main/java/com/peetz/tradingcards/service/TradingcardServiceImpl.java create mode 100644 java-ee/TradingCardsImpl/src/main/java/com/peetz/tradingcards/service/package-info.java create mode 100644 java-ee/TradingCardsImpl/src/test/java/com/peetz/tradingcards/dal/ManufacturerImplTest.java create mode 100644 java-ee/TradingCardsWeb/build.gradle create mode 100644 java-ee/TradingCardsWeb/src/main/java/com/peetz/tradingcards/view/SportView.java create mode 100644 java-ee/TradingCardsWeb/src/main/java/com/peetz/tradingcards/view/TradingCardsView.java create mode 100644 java-ee/TradingCardsWeb/src/main/webapp/index.jsp create mode 100644 java-ee/build.gradle create mode 100644 java-ee/comics.xml create mode 100644 java-ee/config/checkstyle/checkstyle.xml create mode 100644 java-ee/config/checkstyle/checkstyle.xsl create mode 100644 java-ee/config/findbugs/findbugs.xml create mode 100644 java-ee/gradle/wrapper/gradle-wrapper.jar create mode 100644 java-ee/gradle/wrapper/gradle-wrapper.properties create mode 100755 java-ee/gradlew create mode 100755 java-ee/gradlew.bat create mode 100755 java-ee/settings.gradle create mode 100644 java/README.md create mode 100644 java/build.gradle create mode 100644 java/comics.xml create mode 100644 java/config/checkstyle/checkstyle.xml create mode 100644 java/config/checkstyle/checkstyle.xsl create mode 100644 java/config/findbugs/findbugs.xml create mode 100644 java/gradle.properties create mode 100644 java/gradle/wrapper/gradle-wrapper.jar create mode 100644 java/gradle/wrapper/gradle-wrapper.properties create mode 100755 java/gradlew create mode 100644 java/gradlew.bat create mode 100644 java/settings.gradle create mode 100644 java/src/main/java/com/ibtp/kontor/Database.java create mode 100644 java/src/main/java/com/ibtp/kontor/DumpComics.java create mode 100644 java/src/main/java/com/ibtp/kontor/KontorApp.java create mode 100644 java/src/main/java/com/ibtp/kontor/KontorGUI.java create mode 100644 java/src/main/java/com/ibtp/kontor/comics/dal/ArtistDao.java create mode 100644 java/src/main/java/com/ibtp/kontor/comics/dal/ArtistImpl.java create mode 100644 java/src/main/java/com/ibtp/kontor/comics/dal/ComicDao.java create mode 100644 java/src/main/java/com/ibtp/kontor/comics/dal/ComicImpl.java create mode 100644 java/src/main/java/com/ibtp/kontor/comics/dal/IssueDao.java create mode 100644 java/src/main/java/com/ibtp/kontor/comics/dal/IssueImpl.java create mode 100644 java/src/main/java/com/ibtp/kontor/comics/dal/PublisherDao.java create mode 100644 java/src/main/java/com/ibtp/kontor/comics/dal/PublisherImpl.java create mode 100644 java/src/main/java/com/ibtp/kontor/comics/dal/StoryArcDao.java create mode 100644 java/src/main/java/com/ibtp/kontor/comics/dal/StoryArcImpl.java create mode 100644 java/src/main/java/com/ibtp/kontor/comics/dal/VolumeDao.java create mode 100644 java/src/main/java/com/ibtp/kontor/comics/dal/VolumeImpl.java create mode 100644 java/src/main/java/com/ibtp/kontor/comics/entity/Artist.java create mode 100644 java/src/main/java/com/ibtp/kontor/comics/entity/ArtistEntity.java create mode 100644 java/src/main/java/com/ibtp/kontor/comics/entity/Comic.java create mode 100644 java/src/main/java/com/ibtp/kontor/comics/entity/ComicEntity.java create mode 100644 java/src/main/java/com/ibtp/kontor/comics/entity/Issue.java create mode 100644 java/src/main/java/com/ibtp/kontor/comics/entity/IssueEntity.java create mode 100644 java/src/main/java/com/ibtp/kontor/comics/entity/Publisher.java create mode 100644 java/src/main/java/com/ibtp/kontor/comics/entity/PublisherEntity.java create mode 100644 java/src/main/java/com/ibtp/kontor/comics/entity/StoryArc.java create mode 100644 java/src/main/java/com/ibtp/kontor/comics/entity/StoryArcEntity.java create mode 100644 java/src/main/java/com/ibtp/kontor/comics/entity/TradePaperback.java create mode 100644 java/src/main/java/com/ibtp/kontor/comics/entity/Volume.java create mode 100644 java/src/main/java/com/ibtp/kontor/comics/entity/VolumeEntity.java create mode 100644 java/src/main/java/com/ibtp/kontor/comics/view/ComicsMenu.java create mode 100644 java/src/main/java/com/ibtp/kontor/dal/BaseImpl.java create mode 100644 java/src/main/java/com/ibtp/kontor/dal/Database.java create mode 100644 java/src/main/java/com/ibtp/kontor/dal/DatabaseManager.java create mode 100644 java/src/main/java/com/ibtp/kontor/dal/LocalDatabase.java create mode 100644 java/src/main/java/com/ibtp/kontor/library/dal/ArticleDao.java create mode 100644 java/src/main/java/com/ibtp/kontor/library/dal/ArticleImpl.java create mode 100644 java/src/main/java/com/ibtp/kontor/library/dal/AuthorDao.java create mode 100644 java/src/main/java/com/ibtp/kontor/library/dal/AuthorImpl.java create mode 100644 java/src/main/java/com/ibtp/kontor/library/dal/BookDao.java create mode 100644 java/src/main/java/com/ibtp/kontor/library/dal/BookImpl.java create mode 100644 java/src/main/java/com/ibtp/kontor/library/dal/FileDao.java create mode 100644 java/src/main/java/com/ibtp/kontor/library/dal/FileImpl.java create mode 100644 java/src/main/java/com/ibtp/kontor/library/dal/TitleDao.java create mode 100644 java/src/main/java/com/ibtp/kontor/library/dal/TitleImpl.java create mode 100644 java/src/main/java/com/ibtp/kontor/library/entity/ArticleEntity.java create mode 100644 java/src/main/java/com/ibtp/kontor/library/entity/AuthorEntity.java create mode 100644 java/src/main/java/com/ibtp/kontor/library/entity/BookEntity.java create mode 100644 java/src/main/java/com/ibtp/kontor/library/entity/FileEntity.java create mode 100644 java/src/main/java/com/ibtp/kontor/library/entity/TitleEntity.java create mode 100644 java/src/main/java/com/ibtp/kontor/library/view/LibraryMenu.java create mode 100644 java/src/main/java/com/ibtp/kontor/tradingcards/dal/BaseSetDao.java create mode 100644 java/src/main/java/com/ibtp/kontor/tradingcards/dal/BaseSetImpl.java create mode 100644 java/src/main/java/com/ibtp/kontor/tradingcards/dal/InsertDao.java create mode 100644 java/src/main/java/com/ibtp/kontor/tradingcards/dal/InsertImpl.java create mode 100644 java/src/main/java/com/ibtp/kontor/tradingcards/dal/ManufacturerDao.java create mode 100644 java/src/main/java/com/ibtp/kontor/tradingcards/dal/ManufacturerImpl.java create mode 100644 java/src/main/java/com/ibtp/kontor/tradingcards/dal/ParallelSetDao.java create mode 100644 java/src/main/java/com/ibtp/kontor/tradingcards/dal/ParallelSetImpl.java create mode 100644 java/src/main/java/com/ibtp/kontor/tradingcards/dal/PlayerDao.java create mode 100644 java/src/main/java/com/ibtp/kontor/tradingcards/dal/PlayerImpl.java create mode 100644 java/src/main/java/com/ibtp/kontor/tradingcards/dal/PositionDao.java create mode 100644 java/src/main/java/com/ibtp/kontor/tradingcards/dal/PositionImpl.java create mode 100644 java/src/main/java/com/ibtp/kontor/tradingcards/dal/SportCardDao.java create mode 100644 java/src/main/java/com/ibtp/kontor/tradingcards/dal/SportCardImpl.java create mode 100644 java/src/main/java/com/ibtp/kontor/tradingcards/dal/SportDao.java create mode 100644 java/src/main/java/com/ibtp/kontor/tradingcards/dal/SportImpl.java create mode 100644 java/src/main/java/com/ibtp/kontor/tradingcards/dal/TeamDao.java create mode 100644 java/src/main/java/com/ibtp/kontor/tradingcards/dal/TeamImpl.java create mode 100644 java/src/main/java/com/ibtp/kontor/tradingcards/entity/BaseSetEntity.java create mode 100644 java/src/main/java/com/ibtp/kontor/tradingcards/entity/InsertEntity.java create mode 100644 java/src/main/java/com/ibtp/kontor/tradingcards/entity/ManufacturerEntity.java create mode 100644 java/src/main/java/com/ibtp/kontor/tradingcards/entity/ParallelSetEntity.java create mode 100644 java/src/main/java/com/ibtp/kontor/tradingcards/entity/PlayerEntity.java create mode 100644 java/src/main/java/com/ibtp/kontor/tradingcards/entity/PositionEntity.java create mode 100644 java/src/main/java/com/ibtp/kontor/tradingcards/entity/SportCardEntity.java create mode 100644 java/src/main/java/com/ibtp/kontor/tradingcards/entity/SportEntity.java create mode 100644 java/src/main/java/com/ibtp/kontor/tradingcards/entity/TeamEntity.java create mode 100644 java/src/main/java/com/ibtp/kontor/tradingcards/view/TradingCardsMenu.java create mode 100644 java/src/main/resources/META-INF/persistence.xml create mode 100644 java/src/main/resources/logback.xml create mode 100644 java/src/test/java/com/ibtp/kontor/comics/CollectionTest.java create mode 100644 java/src/test/java/com/ibtp/kontor/comics/dal/ArtistImplTest.java create mode 100644 java/src/test/java/com/ibtp/kontor/comics/dal/ComicImplTest.java create mode 100644 java/src/test/java/com/ibtp/kontor/comics/dal/IssueImplTest.java create mode 100644 java/src/test/java/com/ibtp/kontor/comics/dal/PublisherImplTest.java create mode 100644 java/src/test/java/com/ibtp/kontor/comics/dal/StoryArcImplTest.java create mode 100644 java/src/test/java/com/ibtp/kontor/comics/dal/VolumeImplTest.java create mode 100644 java/src/test/java/com/ibtp/kontor/dal/DataAccessLayerTest.java create mode 100644 java/src/test/java/com/ibtp/kontor/library/BookshelfTest.java create mode 100644 java/src/test/java/com/ibtp/kontor/library/dal/ArticleImplTest.java create mode 100644 java/src/test/java/com/ibtp/kontor/library/dal/AuthorImplTest.java create mode 100644 java/src/test/java/com/ibtp/kontor/library/dal/BookImplTest.java create mode 100644 java/src/test/java/com/ibtp/kontor/library/dal/FileImplTest.java create mode 100644 java/src/test/java/com/ibtp/kontor/library/dal/TitleImplTest.java create mode 100644 java/src/test/java/com/ibtp/kontor/tradingcards/CollectionTest.java create mode 100644 java/src/test/java/com/ibtp/kontor/tradingcards/dal/BaseSetImplTest.java create mode 100644 java/src/test/java/com/ibtp/kontor/tradingcards/dal/InsertImplTest.java create mode 100644 java/src/test/java/com/ibtp/kontor/tradingcards/dal/ManufacturerImplTest.java create mode 100644 java/src/test/java/com/ibtp/kontor/tradingcards/dal/ParallelSetImplTest.java create mode 100644 java/src/test/java/com/ibtp/kontor/tradingcards/dal/PlayerImplTest.java create mode 100644 java/src/test/java/com/ibtp/kontor/tradingcards/dal/PositionImplTest.java create mode 100644 java/src/test/java/com/ibtp/kontor/tradingcards/dal/SportCardImplTest.java create mode 100644 java/src/test/java/com/ibtp/kontor/tradingcards/dal/SportImplTest.java create mode 100644 java/src/test/java/com/ibtp/kontor/tradingcards/dal/TeamImplTest.java create mode 100644 java/src/test/java/com/ibtp/kontor/util/LocalTestDatabase.java create mode 100644 java/src/test/resources/META-INF/persistence.xml create mode 100644 java/src/test/resources/logback.xml create mode 100644 java/tysc-20041010-1819.sql diff --git a/java-ee/ComicsImpl/build.gradle b/java-ee/ComicsImpl/build.gradle new file mode 100644 index 0000000..9aa2749 --- /dev/null +++ b/java-ee/ComicsImpl/build.gradle @@ -0,0 +1,5 @@ +jar { + manifest { + attributes 'Implementation-Title': 'Comics', 'Implementation-Version': version + } +} diff --git a/java-ee/ComicsImpl/config/checkstyle/checkstyle.xml b/java-ee/ComicsImpl/config/checkstyle/checkstyle.xml new file mode 100644 index 0000000..7c682c3 --- /dev/null +++ b/java-ee/ComicsImpl/config/checkstyle/checkstyle.xml @@ -0,0 +1,192 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java-ee/ComicsImpl/config/checkstyle/checkstyle.xsl b/java-ee/ComicsImpl/config/checkstyle/checkstyle.xsl new file mode 100644 index 0000000..393a01b --- /dev/null +++ b/java-ee/ComicsImpl/config/checkstyle/checkstyle.xsl @@ -0,0 +1,179 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +

CheckStyle Audit

Designed for use with CheckStyle and Ant.
+
+ + + +
+ + + +
+ + + + + +

+

+ +


+ + + + +
+ + + + +

Files

+ + + + + + + + + + + + + + +
NameErrors
+
+ + + + +

File

+ + + + + + + + + + + + + +
Error DescriptionLine
+ Back to top +
+ + + +

Summary

+ + + + + + + + + + + + +
FilesErrors
+
+ + + + a + b + + +
+ + diff --git a/java-ee/ComicsImpl/config/findbugs/findbugs.xml b/java-ee/ComicsImpl/config/findbugs/findbugs.xml new file mode 100644 index 0000000..34a6e01 --- /dev/null +++ b/java-ee/ComicsImpl/config/findbugs/findbugs.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/java-ee/ComicsImpl/src/main/java/com/peetz/comics/dal/ArtistDao.java b/java-ee/ComicsImpl/src/main/java/com/peetz/comics/dal/ArtistDao.java new file mode 100644 index 0000000..346f363 --- /dev/null +++ b/java-ee/ComicsImpl/src/main/java/com/peetz/comics/dal/ArtistDao.java @@ -0,0 +1,19 @@ +package com.peetz.comics.dal; + +import java.util.List; + +import javax.ejb.Local; + +import com.peetz.comics.entity.ArtistEntity; + +@Local +public interface ArtistDao { + + public ArtistEntity getById(Long id); + + public List findByIds(List ids); + + public ArtistEntity store(ArtistEntity entity); + + public void delete(ArtistEntity entity); +} \ No newline at end of file diff --git a/java-ee/ComicsImpl/src/main/java/com/peetz/comics/dal/ArtistImpl.java b/java-ee/ComicsImpl/src/main/java/com/peetz/comics/dal/ArtistImpl.java new file mode 100644 index 0000000..0f18e6c --- /dev/null +++ b/java-ee/ComicsImpl/src/main/java/com/peetz/comics/dal/ArtistImpl.java @@ -0,0 +1,45 @@ +package com.peetz.comics.dal; + +import java.util.List; + +import javax.ejb.Stateless; +import javax.ejb.TransactionAttribute; +import javax.ejb.TransactionAttributeType; +import javax.persistence.EntityManager; +import javax.persistence.PersistenceContext; +import javax.persistence.Query; + +import com.peetz.comics.entity.ArtistEntity; + +@Stateless(name = "ArtistDao") +@TransactionAttribute(TransactionAttributeType.REQUIRED) +public class ArtistImpl implements ArtistDao { + + @PersistenceContext(unitName = "kontor") + private EntityManager em; + + @Override + public ArtistEntity getById(Long id) { + Query q = em.createNamedQuery(""); + q.setParameter("id", id); + ArtistEntity entity = (ArtistEntity)q.getSingleResult(); + return entity; + } + + @Override + public List findByIds(List ids) { + // TODO Auto-generated method stub + return null; + } + + @Override + public ArtistEntity store(ArtistEntity entity) { + em.persist(entity); + return entity; + } + + @Override + public void delete(ArtistEntity entity) { + em.remove(entity); + } +} \ No newline at end of file diff --git a/java-ee/ComicsImpl/src/main/java/com/peetz/comics/dal/ComicDao.java b/java-ee/ComicsImpl/src/main/java/com/peetz/comics/dal/ComicDao.java new file mode 100644 index 0000000..957bc01 --- /dev/null +++ b/java-ee/ComicsImpl/src/main/java/com/peetz/comics/dal/ComicDao.java @@ -0,0 +1,23 @@ +package com.peetz.comics.dal; + +import java.util.List; + +import javax.ejb.Local; + +import com.peetz.comics.entity.ComicEntity; +import com.peetz.comics.entity.PublisherEntity; + +@Local +public interface ComicDao { + public ComicEntity getById(Long id); + + public List findByIds(List ids); + + public List findByTitle(String title); + + public ComicEntity assignPublisher(ComicEntity comic, PublisherEntity publisher); + + public ComicEntity store(ComicEntity entity); + + public void delete(ComicEntity entity); +} diff --git a/java-ee/ComicsImpl/src/main/java/com/peetz/comics/dal/ComicImpl.java b/java-ee/ComicsImpl/src/main/java/com/peetz/comics/dal/ComicImpl.java new file mode 100644 index 0000000..d2adb99 --- /dev/null +++ b/java-ee/ComicsImpl/src/main/java/com/peetz/comics/dal/ComicImpl.java @@ -0,0 +1,62 @@ +package com.peetz.comics.dal; + +import java.util.List; + +import javax.ejb.Stateless; +import javax.ejb.TransactionAttribute; +import javax.ejb.TransactionAttributeType; +import javax.persistence.EntityManager; +import javax.persistence.PersistenceContext; +import javax.persistence.Query; + +import com.peetz.comics.entity.ComicEntity; +import com.peetz.comics.entity.PublisherEntity; + +@Stateless(name = "ComicDao") +@TransactionAttribute(TransactionAttributeType.REQUIRED) +public class ComicImpl implements ComicDao { + + @PersistenceContext(unitName = "kontor") + private EntityManager em; + + @Override + public ComicEntity getById(Long id) { + Query q = em.createNamedQuery("Comic.findById"); + q.setParameter("id", id); + ComicEntity entity = (ComicEntity)q.getSingleResult(); + return entity; + } + + @Override + public List findByIds(List ids) { + // TODO Auto-generated method stub + return null; + } + + @Override + public List findByTitle(String title) { + Query q = em.createNamedQuery("Comic.findByTitle"); + q.setParameter("title", title); + @SuppressWarnings("unchecked") + List resultList = q.getResultList(); + return resultList; + } + + @Override + public ComicEntity assignPublisher(ComicEntity comic, + PublisherEntity publisher) { + // TODO Auto-generated method stub + return null; + } + + @Override + public ComicEntity store(ComicEntity entity) { + em.persist(entity); + return entity; + } + + @Override + public void delete(ComicEntity entity) { + em.remove(entity); + } +} diff --git a/java-ee/ComicsImpl/src/main/java/com/peetz/comics/entity/ArtistEntity.java b/java-ee/ComicsImpl/src/main/java/com/peetz/comics/entity/ArtistEntity.java new file mode 100644 index 0000000..57e0474 --- /dev/null +++ b/java-ee/ComicsImpl/src/main/java/com/peetz/comics/entity/ArtistEntity.java @@ -0,0 +1,69 @@ +package com.peetz.comics.entity; + +import java.util.ArrayList; +import java.util.Collection; + +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.NamedQueries; +import javax.persistence.NamedQuery; +import javax.persistence.OneToMany; +import javax.persistence.Table; + +@NamedQueries({ + @NamedQuery(name="Artist.findAll", query="SELECT a from ArtistEntity as a"), + @NamedQuery(name="Artist.findByName", query="SELECT a from ArtistEntity as a WHERE a.name = :name") +}) + +@Entity +@Table(name="ARTIST") +public class ArtistEntity { + + private Long id; + + private String name; + + private Collection writtenIssues = new ArrayList(); + + + private Collection inkedIssues = new ArrayList(); + + private Collection penciledIssues = new ArrayList(); + + @Id + @GeneratedValue(strategy=GenerationType.AUTO) + public Long getId() { return id; } + + @SuppressWarnings("unused") + private void setId(Long id) { this.id = id; } + + @Column + public String getName() { return name; } + + public void setName(String name) { this.name = name; } + + public void setWrittenIssues(Collection writtenIssues) { this.writtenIssues = writtenIssues; } + + @OneToMany(mappedBy="writer", cascade=CascadeType.REMOVE) + public Collection getWrittenIssues() { + return writtenIssues; + } + + public void setInkedIssues(Collection inkedIssues) { this.inkedIssues = inkedIssues; } + + @OneToMany(mappedBy="inker", cascade=CascadeType.REMOVE) + public Collection getInkedIssues() { + return inkedIssues; + } + + public void setPenciledIssues(Collection penciledIssues) { this.penciledIssues = penciledIssues; } + + @OneToMany(mappedBy="penciler", cascade=CascadeType.REMOVE) + public Collection getPenciledIssues() { + return penciledIssues; + } +} diff --git a/java-ee/ComicsImpl/src/main/java/com/peetz/comics/entity/ComicEntity.java b/java-ee/ComicsImpl/src/main/java/com/peetz/comics/entity/ComicEntity.java new file mode 100644 index 0000000..4475647 --- /dev/null +++ b/java-ee/ComicsImpl/src/main/java/com/peetz/comics/entity/ComicEntity.java @@ -0,0 +1,90 @@ +package com.peetz.comics.entity; + +import java.util.ArrayList; +import java.util.Collection; + +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.ManyToOne; +import javax.persistence.NamedQueries; +import javax.persistence.NamedQuery; +import javax.persistence.OneToMany; +import javax.persistence.Table; + +@NamedQueries({ + @NamedQuery(name="Comic.findAll", query="SELECT c from ComicEntity as c"), + @NamedQuery(name="Comic.findByTitle", query="SELECT c from ComicEntity as c WHERE c.title = :title") +}) + +@Entity +@Table(name="COMIC") +public class ComicEntity +{ + private Long id; + + private String title; + + private Boolean completed; + + private Boolean currentOrder; + + private Collection issues = new ArrayList(); + + private Collection storyArc = new ArrayList(); + + private Collection volumes = new ArrayList(); + + public PublisherEntity publisher; + + @Id + @GeneratedValue(strategy=GenerationType.AUTO) + public Long getId() { return id; } + + @SuppressWarnings("unused") + private void setId(Long id) { this.id = id; } + + @Column + public String getTitle() { return title; } + + public void setTitle(String title) { this.title = title; } + + @Column + public Boolean getCompleted() { return completed; } + + public Boolean isCompleted() { return completed; } + + public void setCompleted(Boolean completed) { this.completed = completed; } + + @Column + public Boolean getCurrentOrder() { return currentOrder; } + + public Boolean isCurrentOrder() { return currentOrder; } + + public void setCurrentOrder(Boolean currentOrder) { this.currentOrder = currentOrder; } + + public void setIssues(Collection issues) { this.issues = issues; } + + @OneToMany(mappedBy="comic", cascade=CascadeType.REMOVE) + public Collection getIssues() { return issues; } + + public void setStoryArc(Collection storyArc) { this.storyArc = storyArc; } + + @OneToMany(mappedBy="comic", cascade=CascadeType.REMOVE) + public Collection getStoryArc() { return storyArc; } + + public void setVolumes(Collection volumes) { this.volumes = volumes; } + + @OneToMany(mappedBy="comic", cascade=CascadeType.REMOVE) + public Collection getVolumes() { return volumes; } + + @ManyToOne + public PublisherEntity getPublisher() { return publisher; } + + public void setPublisher(PublisherEntity publisher) { + this.publisher = publisher; + } +} diff --git a/java-ee/ComicsImpl/src/main/java/com/peetz/comics/entity/IssueEntity.java b/java-ee/ComicsImpl/src/main/java/com/peetz/comics/entity/IssueEntity.java new file mode 100644 index 0000000..fbda2c4 --- /dev/null +++ b/java-ee/ComicsImpl/src/main/java/com/peetz/comics/entity/IssueEntity.java @@ -0,0 +1,80 @@ +package com.peetz.comics.entity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.ManyToOne; +import javax.persistence.NamedQueries; +import javax.persistence.NamedQuery; +import javax.persistence.Table; + +@NamedQueries({ + @NamedQuery(name="Issue.findAll", query="SELECT i from IssueEntity as i"), + @NamedQuery(name="Issue.findByNumber", query="SELECT i from IssueEntity as i WHERE i.number = :number") +}) + +@Entity +@Table(name = "ISSUE") +public class IssueEntity { + + private Long id; + + private String number; + + private Boolean completed; + + private ComicEntity comic; + + private ArtistEntity writer; + + private ArtistEntity inker; + + private ArtistEntity penciler; + + private StoryArcEntity storyArc; + + @Id + @GeneratedValue(strategy=GenerationType.AUTO) + public Long getId() { return id; } + + @SuppressWarnings("unused") + private void setId(Long id) { this.id = id; } + + @Column + public String getNumber() { return number; } + + public void setNumber(String number) { this.number = number; } + + @Column + public Boolean getCompleted() { return completed; } + public Boolean isCompleted() { return completed; } + + public void setCompleted(Boolean completed) { this.completed = completed; } + + public void setComic(ComicEntity comic) { this.comic = comic; } + + @ManyToOne + public ComicEntity getComic() { return comic; } + + public void setWriter(ArtistEntity writer) { this.writer = writer; } + + @ManyToOne + public ArtistEntity getWriter() { return writer; } + + public void setInker(ArtistEntity inker) { this.inker = inker; } + + @ManyToOne + public ArtistEntity getInker() { return inker; } + + public void setPenciler(ArtistEntity penciler) { this.penciler = penciler; } + + @ManyToOne + public ArtistEntity getPenciler() { return penciler; } + + public void setStoryArc(StoryArcEntity storyArc) { this.storyArc = storyArc; } + + @ManyToOne + public StoryArcEntity getStoryArc() { return storyArc; } +} diff --git a/java-ee/ComicsImpl/src/main/java/com/peetz/comics/entity/PublisherEntity.java b/java-ee/ComicsImpl/src/main/java/com/peetz/comics/entity/PublisherEntity.java new file mode 100644 index 0000000..9252ea8 --- /dev/null +++ b/java-ee/ComicsImpl/src/main/java/com/peetz/comics/entity/PublisherEntity.java @@ -0,0 +1,48 @@ +package com.peetz.comics.entity; + +import java.util.ArrayList; +import java.util.Collection; + +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.NamedQueries; +import javax.persistence.NamedQuery; +import javax.persistence.OneToMany; +import javax.persistence.Table; + +@NamedQueries({ + @NamedQuery(name="Publisher.findAll", query="SELECT p from PublisherEntity as p"), + @NamedQuery(name="Publisher.findByName", query="SELECT p from PublisherEntity as p WHERE p.name = :name") +}) + +@Entity +@Table(name="PUBLISHER") +public class PublisherEntity { + + private Long id; + + private String name; + + private Collection comic = new ArrayList(); + + @Id + @GeneratedValue(strategy=GenerationType.AUTO) + public Long getId() { return id; } + + @SuppressWarnings("unused") + private void setId(Long id) { this.id = id; } + + @Column + public String getName() { return name; } + + public void setName(String name) { this.name = name; } + + public void setComic(Collection comic) { this.comic = comic; } + + @OneToMany(mappedBy="publisher", cascade=CascadeType.REMOVE) + public Collection getComic() { return comic; } +} diff --git a/java-ee/ComicsImpl/src/main/java/com/peetz/comics/entity/StoryArcEntity.java b/java-ee/ComicsImpl/src/main/java/com/peetz/comics/entity/StoryArcEntity.java new file mode 100644 index 0000000..cffec70 --- /dev/null +++ b/java-ee/ComicsImpl/src/main/java/com/peetz/comics/entity/StoryArcEntity.java @@ -0,0 +1,56 @@ +package com.peetz.comics.entity; + +import java.util.ArrayList; +import java.util.Collection; + +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.ManyToOne; +import javax.persistence.NamedQueries; +import javax.persistence.NamedQuery; +import javax.persistence.OneToMany; +import javax.persistence.Table; + +@NamedQueries({ + @NamedQuery(name="StoryArc.findAll", query="SELECT a from StoryArcEntity as a"), + @NamedQuery(name="StoryArc.findByArtist", query="SELECT a from StoryArcEntity as a WHERE a.title = :title") +}) + +@Entity +@Table(name="STORYARC") +public class StoryArcEntity { + + private Long id; + + private String title; + + private Collection issues = new ArrayList(); + + private ComicEntity comic; + + @Id + @GeneratedValue(strategy=GenerationType.AUTO) + public Long getId() { return id; } + + @SuppressWarnings("unused") + private void setId(Long id) { this.id = id; } + + @Column + public String getTitle() { return title; } + + public void setTitle(String title) { this.title = title; } + + public void setIssues(Collection issues) { this.issues = issues; } + + @OneToMany(mappedBy="storyArc", cascade=CascadeType.REMOVE) + public Collection getIssues() { return issues; } + + public void setComic(ComicEntity comic) { this.comic = comic; } + + @ManyToOne + public ComicEntity getComic() { return comic; } +} diff --git a/java-ee/ComicsImpl/src/main/java/com/peetz/comics/entity/VolumeEntity.java b/java-ee/ComicsImpl/src/main/java/com/peetz/comics/entity/VolumeEntity.java new file mode 100644 index 0000000..8f25d13 --- /dev/null +++ b/java-ee/ComicsImpl/src/main/java/com/peetz/comics/entity/VolumeEntity.java @@ -0,0 +1,37 @@ +package com.peetz.comics.entity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.ManyToOne; +import javax.persistence.Table; + +@Entity +@Table(name="VOLUME") +public class VolumeEntity { + + private Long id; + + private String title; + + ComicEntity comic; + + @Id + @GeneratedValue(strategy=GenerationType.AUTO) + public Long getId() { return id; } + + @SuppressWarnings("unused") + private void setId(Long id) { this.id = id; } + + @Column + public String getTitle() { return title; } + + public void setTitle(String title) { this.title = title; } + + @ManyToOne + public ComicEntity getComic() { return comic; } + + public void setComic(ComicEntity comic) { this.comic = comic; } +} diff --git a/java-ee/ComicsImpl/src/main/java/com/peetz/comics/service/ComicService.java b/java-ee/ComicsImpl/src/main/java/com/peetz/comics/service/ComicService.java new file mode 100644 index 0000000..523d230 --- /dev/null +++ b/java-ee/ComicsImpl/src/main/java/com/peetz/comics/service/ComicService.java @@ -0,0 +1,34 @@ +package com.peetz.comics.service; + +import java.util.Collection; + +import javax.ejb.Local; + +import com.peetz.comics.entity.ArtistEntity; +import com.peetz.comics.entity.ComicEntity; +import com.peetz.comics.entity.IssueEntity; +import com.peetz.comics.entity.PublisherEntity; +import com.peetz.comics.entity.StoryArcEntity; + +@Local +public interface ComicService { + public Collection getAllComics(); + + public Collection getAllPublisher(); + + public Collection getAllArtists(); + + public Collection getAllIssuesForComic(ComicEntity comic); + + public Collection getAllStoryArcs(); + + public void addStoryArc(String title); + + public void addPublisher(String name); + + public ComicEntity addComic(String title); + + public PublisherEntity getPublisherById(String nodeValue); + + public void assignPublisher(ComicEntity comic, PublisherEntity publisher); +} diff --git a/java-ee/ComicsImpl/src/main/java/com/peetz/comics/service/ComicServiceImpl.java b/java-ee/ComicsImpl/src/main/java/com/peetz/comics/service/ComicServiceImpl.java new file mode 100644 index 0000000..5f3e222 --- /dev/null +++ b/java-ee/ComicsImpl/src/main/java/com/peetz/comics/service/ComicServiceImpl.java @@ -0,0 +1,92 @@ +package com.peetz.comics.service; + +import java.util.Collection; + +import javax.ejb.Stateless; +import javax.ejb.TransactionAttribute; +import javax.ejb.TransactionAttributeType; + +import com.peetz.comics.entity.ArtistEntity; +import com.peetz.comics.entity.ComicEntity; +import com.peetz.comics.entity.IssueEntity; +import com.peetz.comics.entity.PublisherEntity; +import com.peetz.comics.entity.StoryArcEntity; +import java.util.ArrayList; +import javax.persistence.EntityManager; +import javax.persistence.PersistenceContext; +import javax.persistence.Query; + +@Stateless(name="ComicService") +@TransactionAttribute(TransactionAttributeType.REQUIRED) +public class ComicServiceImpl implements ComicService { + + @PersistenceContext(unitName = "kontor") + private EntityManager em; + + @SuppressWarnings("unchecked") + @Override + public Collection getAllComics() { + Query query = em.createNamedQuery("Comic.findAll"); + ArrayList comicList = new ArrayList(query.getResultList()); + return comicList; + } + + @Override + public Collection getAllPublisher() { + Query query = em.createNamedQuery("Publisher.findAll"); + @SuppressWarnings("unchecked") + ArrayList publisherList = new ArrayList(query.getResultList()); + return publisherList; + } + + @SuppressWarnings("unchecked") + @Override + public Collection getAllArtists() { + Query query = em.createNamedQuery("Artist.findAll"); + ArrayList artistList = new ArrayList(query.getResultList()); + return artistList; + } + + @Override + public Collection getAllIssuesForComic(ComicEntity comic) { + // TODO Auto-generated method stub + return null; + } + + @Override + public Collection getAllStoryArcs() { + // TODO Auto-generated method stub + return null; + } + + @Override + public void addStoryArc(String title) { + // TODO Auto-generated method stub + + } + + @Override + public void addPublisher(String name) { + // TODO Auto-generated method stub + + } + + @Override + public ComicEntity addComic(String title) { + // TODO Auto-generated method stub + return null; + } + + @Override + public PublisherEntity getPublisherById(String nodeValue) { + // TODO Auto-generated method stub + return null; + } + + @Override + public void assignPublisher(ComicEntity comic, PublisherEntity publisher) { + // TODO Auto-generated method stub + + } + +} diff --git a/java-ee/ComicsImpl/src/main/java/com/peetz/comics/service/package-info.java b/java-ee/ComicsImpl/src/main/java/com/peetz/comics/service/package-info.java new file mode 100644 index 0000000..a2d9305 --- /dev/null +++ b/java-ee/ComicsImpl/src/main/java/com/peetz/comics/service/package-info.java @@ -0,0 +1,8 @@ +/** + * + */ +/** + * @author TPEETZ + * + */ +package com.peetz.comics.service; \ No newline at end of file diff --git a/java-ee/ComicsImpl/src/test/java/com/peetz/comics/service/ComicServiceImplTest.java b/java-ee/ComicsImpl/src/test/java/com/peetz/comics/service/ComicServiceImplTest.java new file mode 100644 index 0000000..05f38c1 --- /dev/null +++ b/java-ee/ComicsImpl/src/test/java/com/peetz/comics/service/ComicServiceImplTest.java @@ -0,0 +1,195 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ + +package com.peetz.comics.service; + +import com.peetz.comics.entity.ArtistEntity; +import com.peetz.comics.entity.ComicEntity; +import com.peetz.comics.entity.IssueEntity; +import com.peetz.comics.entity.PublisherEntity; +import com.peetz.comics.entity.StoryArcEntity; +import java.util.Collection; +import javax.ejb.embeddable.EJBContainer; +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; +import static org.junit.Assert.*; +import org.junit.Ignore; + +/** + * + * @author TPEETZ + */ +public class ComicServiceImplTest { + + private static ComicService instance; + private static EJBContainer container; + + public ComicServiceImplTest() { + } + + @BeforeClass + public static void setUpClass() throws Exception { + container = javax.ejb.embeddable.EJBContainer.createEJBContainer(); + instance = (ComicService)container.getContext().lookup("java:global/main/ComicService"); + } + + @AfterClass + public static void tearDownClass() { + container.close(); + } + + @Before + public void setUp() { + } + + @After + public void tearDown() { + } + + /** + * Test of getAllComics method, of class ComicServiceImpl. + */ + @Ignore + @Test + public void testGetAllComics() throws Exception { + System.out.println("getAllComics"); + Collection expResult = null; + Collection result = instance.getAllComics(); + assertEquals(expResult, result); + // TODO review the generated test code and remove the default call to fail. + fail("The test case is a prototype."); + } + + /** + * Test of getAllPublisher method, of class ComicServiceImpl. + */ + @Ignore + @Test + public void testGetAllPublisher() throws Exception { + System.out.println("getAllPublisher"); + Collection expResult = null; + Collection result = instance.getAllPublisher(); + assertEquals(expResult, result); + // TODO review the generated test code and remove the default call to fail. + fail("The test case is a prototype."); + } + + /** + * Test of getAllArtists method, of class ComicServiceImpl. + */ + @Ignore + @Test + public void testGetAllArtists() throws Exception { + System.out.println("getAllArtists"); + Collection expResult = null; + Collection result = instance.getAllArtists(); + assertEquals(expResult, result); + // TODO review the generated test code and remove the default call to fail. + fail("The test case is a prototype."); + } + + /** + * Test of getAllIssuesForComic method, of class ComicServiceImpl. + */ + @Ignore + @Test + public void testGetAllIssuesForComic() throws Exception { + System.out.println("getAllIssuesForComic"); + ComicEntity comic = null; + Collection expResult = null; + Collection result = instance.getAllIssuesForComic(comic); + assertEquals(expResult, result); + // TODO review the generated test code and remove the default call to fail. + fail("The test case is a prototype."); + } + + /** + * Test of getAllStoryArcs method, of class ComicServiceImpl. + */ + @Ignore + @Test + public void testGetAllStoryArcs() throws Exception { + System.out.println("getAllStoryArcs"); + Collection expResult = null; + Collection result = instance.getAllStoryArcs(); + assertEquals(expResult, result); + // TODO review the generated test code and remove the default call to fail. + fail("The test case is a prototype."); + } + + /** + * Test of addStoryArc method, of class ComicServiceImpl. + */ + @Ignore + @Test + public void testAddStoryArc() throws Exception { + System.out.println("addStoryArc"); + String title = ""; + instance.addStoryArc(title); + // TODO review the generated test code and remove the default call to fail. + fail("The test case is a prototype."); + } + + /** + * Test of addPublisher method, of class ComicServiceImpl. + */ + @Ignore + @Test + public void testAddPublisher() throws Exception { + System.out.println("addPublisher"); + String name = ""; + instance.addPublisher(name); + // TODO review the generated test code and remove the default call to fail. + fail("The test case is a prototype."); + } + + /** + * Test of addComic method, of class ComicServiceImpl. + */ + @Ignore + @Test + public void testAddComic() throws Exception { + System.out.println("addComic"); + String title = ""; + ComicEntity expResult = null; + ComicEntity result = instance.addComic(title); + assertEquals(expResult, result); + // TODO review the generated test code and remove the default call to fail. + fail("The test case is a prototype."); + } + + /** + * Test of getPublisherById method, of class ComicServiceImpl. + */ + @Ignore + @Test + public void testGetPublisherById() throws Exception { + System.out.println("getPublisherById"); + String nodeValue = ""; + PublisherEntity expResult = null; + PublisherEntity result = instance.getPublisherById(nodeValue); + assertEquals(expResult, result); + // TODO review the generated test code and remove the default call to fail. + fail("The test case is a prototype."); + } + + /** + * Test of assignPublisher method, of class ComicServiceImpl. + */ + @Ignore + @Test + public void testAssignPublisher() throws Exception { + System.out.println("assignPublisher"); + ComicEntity comic = null; + PublisherEntity publisher = null; + instance.assignPublisher(comic, publisher); + // TODO review the generated test code and remove the default call to fail. + fail("The test case is a prototype."); + } +} diff --git a/java-ee/ComicsWeb/build.gradle b/java-ee/ComicsWeb/build.gradle new file mode 100644 index 0000000..30e1d2e --- /dev/null +++ b/java-ee/ComicsWeb/build.gradle @@ -0,0 +1,7 @@ +apply plugin: 'war' + +version = '0.0.1' + +dependencies { + compile project(':ComicsImpl') +} diff --git a/java-ee/ComicsWeb/src/main/java/com/peetz/comics/view/ComicView.java b/java-ee/ComicsWeb/src/main/java/com/peetz/comics/view/ComicView.java new file mode 100644 index 0000000..d21494c --- /dev/null +++ b/java-ee/ComicsWeb/src/main/java/com/peetz/comics/view/ComicView.java @@ -0,0 +1,36 @@ +package com.peetz.comics.view; + +import com.peetz.comics.service.ComicService; +import java.io.Serializable; +import java.util.logging.Logger; +import javax.ejb.EJB; +import javax.faces.bean.ManagedBean; +import javax.faces.bean.RequestScoped; + +/** + * + * @author TPEETZ + */ +@ManagedBean(name="ComicView") +@RequestScoped +public class ComicView implements Serializable { + + private static final Logger LOG = Logger.getLogger(ComicView.class.getName()); + + @EJB + private ComicService comicService; + + private static final long serialVersionUID = -8261128991042235283L; + + public ComicView() { + LOG.info("ComicView created"); + } + + public Integer getComicsNumber() { + return comicService.getAllComics().size(); + } + + public Integer getPublisherNumber() { + return comicService.getAllPublisher().size(); + } +} diff --git a/java-ee/ComicsWeb/src/main/webapp/artistAdd.jsp b/java-ee/ComicsWeb/src/main/webapp/artistAdd.jsp new file mode 100644 index 0000000..9328510 --- /dev/null +++ b/java-ee/ComicsWeb/src/main/webapp/artistAdd.jsp @@ -0,0 +1,64 @@ +<%@ page language="java"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %> + + + + + + + + Comic Application + + + + + + + + + + + + + + + + + + + + + + + + +
Library Manager
+ <% out.println(com.peetz.comics.navigation.MenuLinks.getInstance().toString()); %> + + <%-- create a html form --%> + + <%-- print out the form data --%> + + + + +
Name:
+ <%-- set the parameter for the dispatch action --%> + + +
+ <%-- submit and back button --%> + + Back + +   + Save +
+
 
+

Ingenieurbüro Thomas Peetz

+
+ +
diff --git a/java-ee/ComicsWeb/src/main/webapp/artistEdit.jsp b/java-ee/ComicsWeb/src/main/webapp/artistEdit.jsp new file mode 100644 index 0000000..3007a9a --- /dev/null +++ b/java-ee/ComicsWeb/src/main/webapp/artistEdit.jsp @@ -0,0 +1,66 @@ +<%@ page language="java"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %> + + + + + + + + Comic Application + + + + + + + + + + + + + + + + + + + + + + + + +
Library Manager
+ <% out.println(com.peetz.comics.navigation.MenuLinks.getInstance().toString()); %> + + <%-- create a html form --%> + + <%-- print out the form data --%> + + + + +
Name:
+ <%-- hidden fields for id and userId --%> + + <%-- set the parameter for the dispatch action --%> + + +
+ <%-- submit and back button --%> + + Back + +   + Save +
+
 
+

Ingenieurbüro Thomas Peetz

+
+ +
diff --git a/java-ee/ComicsWeb/src/main/webapp/artistList.jsp b/java-ee/ComicsWeb/src/main/webapp/artistList.jsp new file mode 100644 index 0000000..1414873 --- /dev/null +++ b/java-ee/ComicsWeb/src/main/webapp/artistList.jsp @@ -0,0 +1,95 @@ +<%@ page language="java"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %> + + + + + + + + Comic Application + + + + + + + + + + + + + + + + + + + + + + + + +
Liste der Comics
+ <% out.println(com.peetz.comics.navigation.MenuLinks.getInstance().toString()); %> + +

Comic Manager

+ Show the comic artist list + + + + <%-- set the header --%> + + + + + + <%-- check if publisher exists and display message or iterate over books --%> + + + + + + + + + <%-- print out the book informations --%> + + <%-- print out the edit and delete link for each artist --%> + + + + + + <%-- end interate --%> + + <%-- if publishers cannot be found display a text --%> + + + + + + + +
Artist name  
No artists available
EditDelete
No artists found.
+
+ <%-- add and back to menu button --%> + Add a new artist +   + Back to menu + + + + + +
 
+

Ingenieurbüro Thomas Peetz

+
+ +
diff --git a/java-ee/ComicsWeb/src/main/webapp/comicAdd.jsp b/java-ee/ComicsWeb/src/main/webapp/comicAdd.jsp new file mode 100644 index 0000000..c623224 --- /dev/null +++ b/java-ee/ComicsWeb/src/main/webapp/comicAdd.jsp @@ -0,0 +1,67 @@ +<%@ page language="java"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %> + + + + + + + + Comic Application + + + + + + + + + + + + + + + + + + + + + + + + +
Library Manager
+ <% out.println(com.peetz.comics.navigation.MenuLinks.getInstance().toString()); %> + + <%-- create a html form --%> + + <%-- print out the form data --%> + + + + + + + +
Title:
Publisher:
Completed:
Current Order:
+ <%-- set the parameter for the dispatch action --%> + + +
+ <%-- submit and back button --%> + + Back + +   + Save +
+
 
+

Ingenieurbüro Thomas Peetz

+
+ +
diff --git a/java-ee/ComicsWeb/src/main/webapp/comicEdit.jsp b/java-ee/ComicsWeb/src/main/webapp/comicEdit.jsp new file mode 100644 index 0000000..ea1cae9 --- /dev/null +++ b/java-ee/ComicsWeb/src/main/webapp/comicEdit.jsp @@ -0,0 +1,90 @@ +<%@ page language="java"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %> + + + + + + + + Comic Application + + + + + + + + + + + + + + + + + + + + + + + + +
Library Manager
+ <% out.println(com.peetz.comics.navigation.MenuLinks.getInstance().toString()); %> + + <%-- create a html form --%> + + <%-- print out the form data --%> + + + + + + + +
Title:
Publisher:
Completed:
Current Order:
+ <%-- hidden fields for id and userId --%> + + <%-- set the parameter for the dispatch action --%> + + + + + + + + + + + + + + + + + + + + +
Issues  
No issues available
EditDelete
No issues available
Add issue
+
+ <%-- submit and back button --%> + + Back + +   + Save +
+
 
+

Ingenieurbüro Thomas Peetz

+
+ +
diff --git a/java-ee/ComicsWeb/src/main/webapp/comicList.jsp b/java-ee/ComicsWeb/src/main/webapp/comicList.jsp new file mode 100644 index 0000000..4f2cc06 --- /dev/null +++ b/java-ee/ComicsWeb/src/main/webapp/comicList.jsp @@ -0,0 +1,99 @@ +<%@ page language="java"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %> + + + + + + + + Comic Application + + + + + + + + + + + + + + + + + + + + + + + + +
Liste der Comics
+ <% out.println(com.peetz.comics.navigation.MenuLinks.getInstance().toString()); %> + +

Comic Manager

+ Show the comic list + + + + <%-- set the header --%> + + + + + + + + <%-- check if book exists and display message or iterate over books --%> + + + + + + + + + <%-- print out the book informations --%> + + + + <%-- print out the edit and delete link for each book --%> + + + + + + <%-- end interate --%> + + <%-- if books cannot be found display a text --%> + + + + + + + +
Comic namePublisherOrder  
No comics available
EditDelete
No comicss found.
+
+ <%-- add and back to menu button --%> + Add a new comic +   + Back to menu + + + + + +
 
+

Ingenieurbüro Thomas Peetz

+
+ +
diff --git a/java-ee/ComicsWeb/src/main/webapp/comics.xhtml b/java-ee/ComicsWeb/src/main/webapp/comics.xhtml new file mode 100644 index 0000000..506f71f --- /dev/null +++ b/java-ee/ComicsWeb/src/main/webapp/comics.xhtml @@ -0,0 +1,51 @@ + + + + + + + + + Comics Application + + + + + + + + + + + + + + + + + + + + + + + + + +
Kontor Manager
+ Kontor
+ Comics
+ Library
+ Medien
+ TradingCards +
+

Kontor Manager

+ + +
 
+

Ingenieurbüro Thomas Peetz

+
+ + diff --git a/java-ee/ComicsWeb/src/main/webapp/index.jsp b/java-ee/ComicsWeb/src/main/webapp/index.jsp new file mode 100644 index 0000000..5825223 --- /dev/null +++ b/java-ee/ComicsWeb/src/main/webapp/index.jsp @@ -0,0 +1,35 @@ + + Comic Application + + + + + + + + + + + + + + + + + + + + + + + + + +
Comic Manager
test +

Comic Manager

+ Show the comic list +
 
+

Ingenieurbüro Thomas Peetz

+
+ + diff --git a/java-ee/ComicsWeb/src/main/webapp/issueAdd.jsp b/java-ee/ComicsWeb/src/main/webapp/issueAdd.jsp new file mode 100644 index 0000000..91aaae1 --- /dev/null +++ b/java-ee/ComicsWeb/src/main/webapp/issueAdd.jsp @@ -0,0 +1,67 @@ +<%@ page language="java"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %> + + + + + + + + Comic Application + + + + + + + + + + + + + + + + + + + + + + + + +
Library Manager
+ <% out.println(com.peetz.comics.navigation.MenuLinks.getInstance().toString()); %> + + <%-- create a html form --%> + + <%-- print out the form data --%> + + + + + + + +
Comic:
Number:
Author:
Read:
+ <%-- set the parameter for the dispatch action --%> + + +
+ <%-- submit and back button --%> + + Back + +   + Save +
+
 
+

Ingenieurbüro Thomas Peetz

+
+ +
diff --git a/java-ee/ComicsWeb/src/main/webapp/issueEdit.jsp b/java-ee/ComicsWeb/src/main/webapp/issueEdit.jsp new file mode 100644 index 0000000..0ea25cb --- /dev/null +++ b/java-ee/ComicsWeb/src/main/webapp/issueEdit.jsp @@ -0,0 +1,66 @@ +<%@ page language="java"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %> + + + + + + + + Comic Application + + + + + + + + + + + + + + + + + + + + + + + + +
Library Manager
+ <% out.println(com.peetz.comics.navigation.MenuLinks.getInstance().toString()); %> + + <%-- create a html form --%> + + <%-- print out the form data --%> + + + + + + +
Number:
Author:
Read:
+ <%-- set the parameter for the dispatch action --%> + + +
+ <%-- submit and back button --%> + + Back + +   + Save +
+
 
+

Ingenieurbüro Thomas Peetz

+
+ +
diff --git a/java-ee/ComicsWeb/src/main/webapp/publisherAdd.jsp b/java-ee/ComicsWeb/src/main/webapp/publisherAdd.jsp new file mode 100644 index 0000000..85f220a --- /dev/null +++ b/java-ee/ComicsWeb/src/main/webapp/publisherAdd.jsp @@ -0,0 +1,64 @@ +<%@ page language="java"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %> + + + + + + + + Comic Application + + + + + + + + + + + + + + + + + + + + + + + + +
Library Manager
+ <% out.println(com.peetz.comics.navigation.MenuLinks.getInstance().toString()); %> + + <%-- create a html form --%> + + <%-- print out the form data --%> + + + + +
Name:
+ <%-- set the parameter for the dispatch action --%> + + +
+ <%-- submit and back button --%> + + Back + +   + Save +
+
 
+

Ingenieurbüro Thomas Peetz

+
+ +
diff --git a/java-ee/ComicsWeb/src/main/webapp/publisherEdit.jsp b/java-ee/ComicsWeb/src/main/webapp/publisherEdit.jsp new file mode 100644 index 0000000..a8eb56d --- /dev/null +++ b/java-ee/ComicsWeb/src/main/webapp/publisherEdit.jsp @@ -0,0 +1,66 @@ +<%@ page language="java"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %> + + + + + + + + Comic Application + + + + + + + + + + + + + + + + + + + + + + + + +
Library Manager
+ <% out.println(com.peetz.comics.navigation.MenuLinks.getInstance().toString()); %> + + <%-- create a html form --%> + + <%-- print out the form data --%> + + + + +
Name:
+ <%-- hidden fields for id and userId --%> + + <%-- set the parameter for the dispatch action --%> + + +
+ <%-- submit and back button --%> + + Back + +   + Save +
+
 
+

Ingenieurbüro Thomas Peetz

+
+ +
diff --git a/java-ee/ComicsWeb/src/main/webapp/publisherList.jsp b/java-ee/ComicsWeb/src/main/webapp/publisherList.jsp new file mode 100644 index 0000000..b0ef596 --- /dev/null +++ b/java-ee/ComicsWeb/src/main/webapp/publisherList.jsp @@ -0,0 +1,95 @@ +<%@ page language="java"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %> + + + + + + + + Comic Application + + + + + + + + + + + + + + + + + + + + + + + + +
Liste der Comics
+ <% out.println(com.peetz.comics.navigation.MenuLinks.getInstance().toString()); %> + +

Comic Manager

+ Show the comic list + + + + <%-- set the header --%> + + + + + + <%-- check if publisher exists and display message or iterate over books --%> + + + + + + + + + <%-- print out the book informations --%> + + <%-- print out the edit and delete link for each book --%> + + + + + + <%-- end interate --%> + + <%-- if publishers cannot be found display a text --%> + + + + + + + +
Publisher name  
No publishers available
EditDelete
No publishers found.
+
+ <%-- add and back to menu button --%> + Add a new publisher +   + Back to menu + + + + + +
 
+

Ingenieurbüro Thomas Peetz

+
+ +
diff --git a/java-ee/DVDs.csv b/java-ee/DVDs.csv new file mode 100644 index 0000000..1b8df87 --- /dev/null +++ b/java-ee/DVDs.csv @@ -0,0 +1,391 @@ +Title +(T)Raumschiff Surprise - Periode 1 +7 Zwerge - Männer allein im Wald +A Beatiful Mind +About Schmidt +Akte X: Der Film +Aladdin +"Alias - Die Agentin +Vol. 1" +"Alias - Die Agentin +Vol. 2" +"Alias - Die Agentin +Vol. 3" +Alles tanzt nach meiner Pfeife +American Beauty +American History X +American Pie +American Pie 2 +American Pie Jetzt wird geheiratet +American Psycho +An jedem verdammten Sonntag +Angeklagt +Antz +Apollo 13 +Arac Attack +Arachnophobia +Arlington Road +Asso +Atlantis Das Geheimnis der verlorenen Stadt +Austin Powers +Austin Powers Goldständer +Austin Powers Spion in geheimer Missionarsstellung +"Avanti, Avanti" +Backdraft +Bad Taste +Bang Boom Bang +Bärenbrüder +Being John Malkovich +"Berlin, Berlin - Staffel 1" +"Berlin, Berlin - Staffel 2" +"Berlin, Berlin - Staffel 3" +"Berlin, Berlin - Staffel 4" +Bernard & Bianca +Beverly Hills Cop +Beverly Hills Cop II +Beverly Hills Cop III +Black Hawk Down +Blow +Blues Brothers +Blues Brothers 2000 +Bowfingers grosse Nummer +Braveheart +Brust oder Keule +Caddyshack +Chasing Amy +Cheech & Chong's The Corsican Brothers +Cheech & Chong im Dauerstress +Cheech & Chong Jetzt raucht überhaupt nichts mehr +Cheech & Chong Viel Rauch um Nichts +Cheech & Chongs Heisse Träume +Cocktail für eine Leiche +ConAir +Daredevil +Dark City +Das Appartment +Das Fenster zum Hof +Das fünfte Element +Das grosse Krabbeln +Das Jesus Video +Das kleine Arschloch +Das Krokodil und sein Nilpferd +Das Netz +Das Schweigen der Lämmer +Das Wunder von Bern +Der Boss +Der Club der toten Dichter +Der dritte Mann +Der Glückspilz +Der Hauch des Todes +Der kleine Horrorladen +Der Knochenjäger +Der Mann mit dem goldenen Colt +"Der Mann, der zuviel wußte" +Der Millionenfinger +Der Mondmann +Der Morgen stirbt nie +Der Name der Rose +Der Pate 1-3 +Der Puppenspieler +Der Querkopf +Der Schatzplanet +"Der Spion, der mich liebte" +Der talentierte Mr. Ripley +Der Totmacher +Der Wixxer +Diamantenfieber +"Dick und Doof erben eine Insel, Atoll K" +Didi - der Doppelgänger +Didi - Der Experte +Didi - Der Schnüffler +Didi - und die Rache der Enterbten +Didi auf vollen Touren +Die Ärzte Unplugged Rock'n' Roll Realschule +Die Einsteiger +"Die Geister, die ich rief" +Die Glücksjäger +Die Glücksritter +Die große Schlacht des Don Camillo +Die Harald Schmidt Show - Best Of Vol. 2 +Die Harald Schmidt Show - Best of +Die Jury +Die Liga der aussergewöhnlichen Gentlemen +Die Monster AG +Die Muppets erobern Manhattan +Die Muppets Weihnachtsgeschichte +Die nackte Kanone +Die nackte Kanone 2 1/2 +Die nackte Kanone 33 1/3 +Die neun Pforten +Die rechte und die linke Hand des Teufels +Die Truman Show +Die unglaubliche Reise in einem verrückten Flugzeug +Die unglaubliche Reise in einem verrückten Raumschiff +Die Unglaublichen +Die Verurteilten +Die Welt ist nicht genug +Die Wiege der Sonne +Diese Zwei sind nicht zu fassen +Dogma +Don Camillo und Peppone +Don Camillos Rückkehr +Dr. Dolittle 1+2 +Dragonheart +Drei Amigos +Ein Fisch namens Wanda +Ein Fisch namens Wanda +Ein irrer Typ +Ein Ticket für Zwei +Eine Leiche zum Dessert +"Eine schrecklich nette Familie +Dritte Staffel" +"Eine schrecklich nette Familie +Erste Staffel" +"Eins, Zwei, Drei" +Eiskalte Engel +El Dorado +Elektra +Es war einmal in Amerika +Evolution +Ey Mann - Wo is' mein Auto? +Faceoff - Im Körper des Feindes +Fahrenheit 9/11 +Falsches Spiel mit Roger Rabbit +Feuerball +Findet Nemo +Flammendes Inferno +Fletcher's Visionen +Fluch der Karibik +Forrest Gump +Four Rooms +Foxy Brown +Freddy vs. Jason +Freeze - Alptraum Nachtwache +Frenzy +Frequency +Fröhliche Ostern +From Dusk Till Dawn +From Dusk Till Dawn 2 +"From Dusk Till Dawn 3 +The Hangman's Daughter" +From Hell +Galaxy Quest +Gangs of New York +Gegen jede Regel +Geld oder Leber +Genosse Don Camillo +Ghost Ship +Ghostbusters 2 +Girls United +Glauben ist Alles! +God's Army +God's Army 3 +GoldenEye +Goldfinger +Good Bye Lenin! +Good Morning Vietnam +Good Will Hunting +Gottes Werk und Teufels Beitrag +Grosse Erwartungen +Hannibal +Harald Schmidt Best of Vol. 1+2 + Golden Goals +Helden aus der zweiten Reihe +Hercules +Hero +Hochwürden Don Camillo +Höllentour - Die Tour der Helden +Hot Shots 1 + 2 +Hulk +"I, Robot" +Ice Age +Im Angesicht des Todes +Im Geheimdienst Ihrer Majestät +Immer Ärger mit Bernie +In 80 Tagen um die Welt Teil 1 +In 80 Tagen um die Welt Teil 2 +In tödlicher Mission +Independence Day +Irma La Douce +Jabberwocky +Jackie Brown +Jagd auf einen Unsichtbaren +Jagd auf Roter Oktober +James Bond jagt Dr. No +JFK John F. Kennedy - Tatort Dallas +Johnny English +Jumanji +Kentucky Fried Movie +Kill Bill Vol. 1 +Kill Bill Vol. 2 +"Knight Moves +Ein mörderisches Spiel" +König der Fischer +La Boum +La Boum 2 +Leben und Sterben lassen +Liebesgrüße aus Moskau +Lizenz zum Töten +Lola rennt +Lost in Space +Lost In Translation +Louis und seine außerirdischen Kohlköpfe +Luther +Mallrats +Man lebt nur zweimal +Marillion Christmas in the Chapel +Marillion Live From Loreley +Marillion shot in the dark +Marnie +Master & Commander +Maverick +"MexiCollection +El Mariachi +Desperado +Irgendwann in Mexico" +MIB +MIB 2 +Missing +"Montys enzyklopythonia (Das Leben des Brian, Die Ritter der Kokosnuss, Der Sinn des Lebens)" +Moonraker - Streng Geheim +Mörderischer Vorsprung +Mr. Bean 1 +Mr. Bean 2 +Mr. Bean 3 +Muppets aus dem All +Muppets Die Schatzinsel +Mystic River +Nick Knatterton Teil 1 +Nick Knatterton Teil 2 +Nightmare Before Christmas +Nightwish - end of innocence +Nur 48 Stunden +"O Brother, Where Art Thou?" +Ocean's Eleven +Ocean's Twelve +Octopussy +"Onkel Paul, die große Pflaume" +Open Range +Oscar +Panic Room +Perdita Durango +Peter Gabriel Growing Up Live +Peter Gabriel Secret World Live +Platoon +Pulp Fiction +Rat Race Der nackte Wahnsinn +Reservoir Dogs +Resident Evil +Richy Guitar +Romeo Must Die +Roter Drache +Sag niemals nie +Scary Movie +Scary Movie 2 +Scharfe Kurven für Madame +Schiffsmeldungen +Schlappe Bullen beissen nicht +Scooby-Doo +Scream +Scream 2 +Scrubs: Die Anfänger - Die komplette erste Staffel (4 DVDs) +Scrubs: Die Anfänger - Die komplette zweite Staffel (4 DVDs) +Scrubs: Die Anfänger - Die komplette dritte Staffel (4 DVDs) +Shaft +Shakespeare in Love +Shang-High Noon +Shrek +Shrek 2 +Sideways +Sin City +Sin Eater +Sleepers +Sleepy Hollow +Small Soldiers +snatch Schweine und Diamanten +Solo für Zwei +Sonnenallee +South Park Der Film +Space Cowboys +Spaceballs +Speed Teil 1 + Teil 2 +Sphere +Spider-Man 2 +Spiel mir das Lied vom Tod +Stakeout II +Star Trek 1 +Star Trek 10 Nemesis +Star Trek 2 Der Zorn des Khan +Star Trek 3 Auf der Such nach Mr. Spock +Star Trek 4 Zurück in die Gegenwart +Star Trek 5 Am Rande des Universums +Star Trek 6 Das unentdeckte Land +Star Trek 7 Treffen der Generationen +Star Trek 8 Der erste Kontakt +Star Trek 9 Der Aufstand +Star Wars - Bonusmaterial +Star Wars - Clone Wars Vol. 1 +Star Wars - Clone Wars Vol. 2 +Star Wars - Episode 2 +Star Wars - Episode 3 - Die Rache der Sith +Star Wars - Episode IV - Eine neue Hoffnung +Star Wars - Episode V - Das Imperium schlägt zurück +Star Wars - Episode VI - Die Rückkehr der Jedi-Ritter +Stigmata +Stirb an einem anderen Tag +Stirb langsam 1+2 +Sumo Bruno +Tanz der Teufel +Tanz der Vampire +Terminator 2 Tag der Abrechnung +Terminator 3 Rebellion der Maschinen +The Abyss +The Art of War +The Big Lebowski +The Core +The Crow +The Day After Tomorrow +The Fog Nebel des Grauens +The Game +The Green Mile +The Rock +The Scorpion King +The Time Machine +Three Kings +Tiger & Dragon +Tomb Raider +Tomb Raider Die Wiege des Lebens +Topas +Toy Story +Toy Story 2 +Traffic Macht des Kartells +Troja +Tron +Twister +U-Turn +UHF +Und dann kam Polly +under suspicion Mörderisches Spiel +Underworld +Van Helsing +Verlockende Falle +Verrückt nach Mary +Verrückt nach mehr Mary +Vertigo +Vier Fäuste für ein Halleluja +Vier Fäuste gegen Rio +Volcano +Volker Pispers Live +Wayne's World +Wayne's World 2 +Wilde Kreaturen +X-Men +X-Men 2 +Zoolander +Zurück in die Zukunft Trilogie Boxset +Zwei Asse trumpfen auf +Zwei außer Rand und Band +Zwei bärenstarke Typen +Zwei Himmelhunde auf dem Weg zur Hölle +Zwei hinreissend verdorbene Schurken +Zwei Nasen tanken Super +Zwei sind nicht zu bremsen diff --git a/java-ee/Jenkinsfile b/java-ee/Jenkinsfile new file mode 100644 index 0000000..2f64305 --- /dev/null +++ b/java-ee/Jenkinsfile @@ -0,0 +1,15 @@ +node { + stage "Checkout" + checkout scm + stage 'Prepare Gradle build' + sh "chmod +x gradlew" + stage 'Stage Build' + sh "./gradlew --no-daemon clean build -x findbugsMain -x findbugsTest -x test" + stage 'Archive Artifacts' + archiveArtifacts allowEmptyArchive: true, artifacts: '**/build/reports/*/*.xml', defaultExcludes: false, onlyIfSuccessful: true + archiveArtifacts allowEmptyArchive: true, artifacts: '**/reports/*/*.html' + junit allowEmptyResults: true, testResults: '**/build/test-results/*.xml' + //step([$class: 'CheckStylePublisher', pattern: '**/build/reports/checkstyle/*.xml']) + //step([$class: 'FindBugsPublisher', pattern: '**/build/reports/findbugs/*.xml']) +} + diff --git a/java-ee/KontorApp/build.gradle b/java-ee/KontorApp/build.gradle new file mode 100644 index 0000000..437481b --- /dev/null +++ b/java-ee/KontorApp/build.gradle @@ -0,0 +1,19 @@ +apply plugin: 'java' +apply plugin: 'application' + +dependencies { + compile 'org.hibernate:hibernate-core:4.3.8.Final' + compile 'org.hibernate:hibernate-entitymanager:4.3.8.Final' + compile 'org.hsqldb:hsqldb:2.3.0' + compile 'ch.qos.logback:logback-core:1.1.2' + compile 'ch.qos.logback:logback-classic:1.1.2' + testCompile group: 'junit', name: 'junit', version: '4.11' +} + +mainClassName = 'com.ibtp.kontor.KontorApp' + +jar { + manifest { + attributes 'Implementation-Title': 'Kontor Application', 'Implementation-Version': version, 'Main-Class': mainClassName + } +} diff --git a/java-ee/KontorApp/src/main/java/com/ibtp/kontor/KontorApp.java b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/KontorApp.java new file mode 100644 index 0000000..b87a849 --- /dev/null +++ b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/KontorApp.java @@ -0,0 +1,23 @@ +package com.ibtp.kontor; + +/** + * Created by TPEETZ on 10.02.2015. + */ +public class KontorApp { + + private KontorGUI mainframe; + + public KontorApp() { + mainframe = new KontorGUI(this); + + mainframe.setVisible(true); + } + + public void exitApplication() { + System.exit(0); + } + + public static void main(String[] args) { + new KontorApp(); + } +} diff --git a/java-ee/KontorApp/src/main/java/com/ibtp/kontor/KontorGUI.java b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/KontorGUI.java new file mode 100644 index 0000000..40a4b2d --- /dev/null +++ b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/KontorGUI.java @@ -0,0 +1,69 @@ +package com.ibtp.kontor; + + +import com.ibtp.kontor.comics.view.ComicsMenu; +import com.ibtp.kontor.library.view.LibraryMenu; +import com.ibtp.kontor.tradingcards.view.TradingCardsMenu; + +import javax.swing.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +/** + * Created by TPEETZ on 11.02.2015. + */ +public class KontorGUI extends javax.swing.JFrame { + + KontorApp application; + JMenuBar menuBar; + JMenu menuFile; + JMenuItem menuFileExit; + + JMenuItem menuFileStart = new JMenuItem(); + + JMenu menuHelp; + JMenuItem menuHelpAbout; + + public KontorGUI(KontorApp kontorApp) { + application = kontorApp; + initComponents(); + } + + private void initComponents() { + setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); + GroupLayout layout = new GroupLayout(getContentPane()); + getContentPane().setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(GroupLayout.Alignment.LEADING).addGap(0, 400, Short.MAX_VALUE) + ); + layout.setVerticalGroup( + layout.createParallelGroup(GroupLayout.Alignment.LEADING).addGap(0, 300, Short.MAX_VALUE) + ); + pack(); + setTitle("Kontor Application"); + createMainMenu(); + //createToolBar(); + } + + private void createMainMenu() { + menuBar = new JMenuBar(); + menuFile = new JMenu("File"); + menuFileExit = new JMenuItem("Exit"); + menuHelp = new JMenu("Help"); + menuHelpAbout = new JMenuItem("About"); + setJMenuBar(menuBar); + menuBar.add(menuFile); + menuFile.add(menuFileExit); + menuBar.add(new ComicsMenu()); + menuBar.add(new LibraryMenu()); + menuBar.add(new TradingCardsMenu()); + menuBar.add(menuHelp); + menuHelp.add(menuHelpAbout); + menuFileExit.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + application.exitApplication(); + } + }); + } +} diff --git a/java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/dal/ArtistDao.java b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/dal/ArtistDao.java new file mode 100644 index 0000000..00c4b01 --- /dev/null +++ b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/dal/ArtistDao.java @@ -0,0 +1,26 @@ +package com.ibtp.kontor.comics.dal; + +import com.ibtp.kontor.comics.entity.ArtistEntity; + +import java.util.Collection; +import java.util.List; + +/** + * Created by TPEETZ on 16.01.2015. + */ +interface ArtistDao { + + public ArtistEntity getById(Long id); + + public Collection findByIds(List ids); + + public Collection findByName(String name); + + public Collection findAll(); + + public ArtistEntity addArtist(String name); + + public ArtistEntity store(ArtistEntity entity); + + public void delete(ArtistEntity entity); +} diff --git a/java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/dal/ArtistImpl.java b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/dal/ArtistImpl.java new file mode 100644 index 0000000..1f5c604 --- /dev/null +++ b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/dal/ArtistImpl.java @@ -0,0 +1,67 @@ +package com.ibtp.kontor.comics.dal; + +import com.ibtp.kontor.comics.entity.ArtistEntity; +import com.ibtp.kontor.dal.BaseImpl; + +import javax.persistence.EntityManager; +import javax.persistence.Query; +import java.util.Collection; +import java.util.List; + +/** + * Created by TPEETZ on 16.01.2015. + */ +public class ArtistImpl extends BaseImpl implements ArtistDao { + + public ArtistImpl() {} + + @Override + public ArtistEntity getById(Long id) { + Query query = getEntityManager().createNamedQuery("Artist.findById"); + query.setParameter("id", id); + return (ArtistEntity)query.getSingleResult(); + } + + @Override + public Collection findByIds(List ids) { + return null; + } + + @Override + public Collection findAll() { + Query query = getEntityManager().createNamedQuery("Artist.findAll"); + return query.getResultList(); + + } + + @Override + public Collection findByName(String name) { + Query query = getEntityManager().createNamedQuery("Artist.findByName"); + query.setParameter("name", name); + return query.getResultList(); + } + + @Override + public ArtistEntity addArtist(String name) { + ArtistEntity artist = new ArtistEntity(name); + artist = store(artist); + return artist; + } + + @Override + public ArtistEntity store(ArtistEntity entity) { + EntityManager em = getEntityManager(); + em.getTransaction().begin(); + em.persist(entity); + em.getTransaction().commit(); + return entity; + } + + @Override + public void delete(ArtistEntity entity) { + EntityManager em = getEntityManager(); + em.getTransaction().begin(); + em.remove(entity); + em.getTransaction().commit(); + } +} diff --git a/java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/dal/ComicDao.java b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/dal/ComicDao.java new file mode 100644 index 0000000..c77fb89 --- /dev/null +++ b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/dal/ComicDao.java @@ -0,0 +1,26 @@ +package com.ibtp.kontor.comics.dal; + +import com.ibtp.kontor.comics.entity.ComicEntity; + +import java.util.Collection; +import java.util.List; + +/** + * Created by thomas on 17.01.15. + */ +interface ComicDao { + + public ComicEntity getById(Long id); + + public Collection findByIds(List ids); + + public Collection findByTitle(String title); + + public Collection findAll(); + + public ComicEntity addComic(String title); + + public ComicEntity store(ComicEntity entity); + + public void delete(ComicEntity entity); +} diff --git a/java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/dal/ComicImpl.java b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/dal/ComicImpl.java new file mode 100644 index 0000000..ecbad88 --- /dev/null +++ b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/dal/ComicImpl.java @@ -0,0 +1,65 @@ +package com.ibtp.kontor.comics.dal; + +import com.ibtp.kontor.comics.entity.ComicEntity; +import com.ibtp.kontor.dal.BaseImpl; + +import javax.persistence.EntityManager; +import javax.persistence.Query; +import java.util.Collection; +import java.util.List; + +/** + * Created by TPEETZ on 28.01.2015. + */ +public class ComicImpl extends BaseImpl implements ComicDao { + + @Override + public ComicEntity getById(Long id) { + Query query = getEntityManager().createNamedQuery("Comic.findById"); + query.setParameter("id", id); + return (ComicEntity)query.getSingleResult(); + } + + @Override + public Collection findByIds(List ids) { + return null; + } + + @Override + public Collection findByTitle(String title) { + Query query = getEntityManager().createNamedQuery("Comic.findByTitle"); + query.setParameter("title", title); + return query.getResultList(); + } + + @Override + public Collection findAll() { + Query query = getEntityManager().createNamedQuery("Comic.findAll"); + return query.getResultList(); + } + + @Override + public ComicEntity addComic(String title) { + ComicEntity comicEntity = new ComicEntity(); + comicEntity.setTitle(title); + store(comicEntity); + return comicEntity; + } + + @Override + public ComicEntity store(ComicEntity entity) { + EntityManager em = getEntityManager(); + em.getTransaction().begin(); + em.persist(entity); + em.getTransaction().commit(); + return entity; + } + + @Override + public void delete(ComicEntity entity) { + EntityManager em = getEntityManager(); + em.getTransaction().begin(); + em.remove(entity); + em.getTransaction().commit(); + } +} diff --git a/java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/dal/IssueDao.java b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/dal/IssueDao.java new file mode 100644 index 0000000..49a5ab2 --- /dev/null +++ b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/dal/IssueDao.java @@ -0,0 +1,23 @@ +package com.ibtp.kontor.comics.dal; + +import com.ibtp.kontor.comics.entity.IssueEntity; + +import java.util.Collection; +import java.util.List; + +/** + * Created by TPEETZ on 19.01.2015. + */ +interface IssueDao { + public IssueEntity getById(Long id); + + public Collection findByIds(List ids); + + public Collection findByNumber(String number); + + public Collection findAll(); + + public IssueEntity store(IssueEntity entity); + + public void delete(IssueEntity entity); +} diff --git a/java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/dal/IssueImpl.java b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/dal/IssueImpl.java new file mode 100644 index 0000000..8f70845 --- /dev/null +++ b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/dal/IssueImpl.java @@ -0,0 +1,57 @@ +package com.ibtp.kontor.comics.dal; + +import com.ibtp.kontor.comics.entity.IssueEntity; +import com.ibtp.kontor.dal.BaseImpl; + +import javax.persistence.EntityManager; +import javax.persistence.Query; +import java.util.Collection; +import java.util.List; + +/** + * Created by TPEETZ on 28.01.2015. + */ +public class IssueImpl extends BaseImpl implements IssueDao { + + @Override + public IssueEntity getById(Long id) { + Query query = getEntityManager().createNamedQuery("Issue.findById"); + query.setParameter("id", id); + return (IssueEntity)query.getSingleResult(); + } + + @Override + public Collection findByIds(List ids) { + return null; + } + + @Override + public Collection findByNumber(String number) { + Query query = getEntityManager().createNamedQuery("Issue.findByNumber"); + query.setParameter("number", number); + return query.getResultList(); + } + + @Override + public Collection findAll() { + Query query = getEntityManager().createNamedQuery("Issue.findAll"); + return query.getResultList(); + } + + @Override + public IssueEntity store(IssueEntity entity) { + EntityManager em = getEntityManager(); + em.getTransaction().begin(); + em.persist(entity); + em.getTransaction().commit(); + return entity; + } + + @Override + public void delete(IssueEntity entity) { + EntityManager em = getEntityManager(); + em.getTransaction().begin(); + em.remove(entity); + em.getTransaction().commit(); + } +} diff --git a/java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/dal/PublisherDao.java b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/dal/PublisherDao.java new file mode 100644 index 0000000..0722522 --- /dev/null +++ b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/dal/PublisherDao.java @@ -0,0 +1,26 @@ +package com.ibtp.kontor.comics.dal; + +import com.ibtp.kontor.comics.entity.PublisherEntity; + +import java.util.Collection; +import java.util.List; + +/** + * Created by thomas on 17.01.15. + */ +interface PublisherDao { + + public PublisherEntity getById(Long id); + + public Collection findByIds(List ids); + + public Collection findByName(String name); + + public Collection findAll(); + + public PublisherEntity addPublisher(String name); + + public PublisherEntity store(PublisherEntity entity); + + public void delete(PublisherEntity entity); +} diff --git a/java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/dal/PublisherImpl.java b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/dal/PublisherImpl.java new file mode 100644 index 0000000..d911c4d --- /dev/null +++ b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/dal/PublisherImpl.java @@ -0,0 +1,62 @@ +package com.ibtp.kontor.comics.dal; + +import com.ibtp.kontor.comics.entity.PublisherEntity; +import com.ibtp.kontor.dal.BaseImpl; + +import javax.persistence.EntityManager; +import javax.persistence.Query; +import java.util.Collection; +import java.util.List; + +/** + * Created by TPEETZ on 20.01.2015. + */ +public class PublisherImpl extends BaseImpl implements PublisherDao { + + @Override + public PublisherEntity getById(Long id) { + return null; + } + + @Override + public Collection findByIds(List ids) { + return null; + } + + @Override + public Collection findByName(String name) { + Query query = getEntityManager().createNamedQuery("Publisher.findByName"); + query.setParameter("name", name); + return query.getResultList(); + } + + @Override + public Collection findAll() { + Query query = getEntityManager().createNamedQuery("Publisher.findAll"); + return query.getResultList(); + } + + @Override + public PublisherEntity addPublisher(String name) { + PublisherEntity publisher = new PublisherEntity(name); + store(publisher); + return publisher; + } + + @Override + public PublisherEntity store(PublisherEntity entity) { + EntityManager em = getEntityManager(); + em.getTransaction().begin(); + em.persist(entity); + em.getTransaction().commit(); + return entity; + } + + @Override + public void delete(PublisherEntity entity) { + EntityManager em = getEntityManager(); + em.getTransaction().begin(); + em.remove(entity); + em.getTransaction().commit(); + } +} diff --git a/java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/dal/StoryArcDao.java b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/dal/StoryArcDao.java new file mode 100644 index 0000000..40761fe --- /dev/null +++ b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/dal/StoryArcDao.java @@ -0,0 +1,24 @@ +package com.ibtp.kontor.comics.dal; + +import com.ibtp.kontor.comics.entity.StoryArcEntity; + +import java.util.Collection; +import java.util.List; + +/** + * Created by TPEETZ on 19.01.2015. + */ +interface StoryArcDao { + + public StoryArcEntity getById(Long id); + + public Collection findByIds(List ids); + + public Collection findByTitle(String title); + + public Collection findAll(); + + public StoryArcEntity store(StoryArcEntity entity); + + public void delete(StoryArcEntity entity); +} diff --git a/java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/dal/StoryArcImpl.java b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/dal/StoryArcImpl.java new file mode 100644 index 0000000..3a39271 --- /dev/null +++ b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/dal/StoryArcImpl.java @@ -0,0 +1,55 @@ +package com.ibtp.kontor.comics.dal; + +import com.ibtp.kontor.comics.entity.StoryArcEntity; +import com.ibtp.kontor.dal.BaseImpl; + +import javax.persistence.EntityManager; +import javax.persistence.Query; +import java.util.Collection; +import java.util.List; + +/** + * Created by TPEETZ on 28.01.2015. + */ +public class StoryArcImpl extends BaseImpl implements StoryArcDao { + + @Override + public StoryArcEntity getById(Long id) { + return null; + } + + @Override + public Collection findByIds(List ids) { + return null; + } + + @Override + public Collection findByTitle(String title) { + Query query = getEntityManager().createNamedQuery("StoryArc.findByTitle"); + query.setParameter("title", title); + return query.getResultList(); + } + + @Override + public Collection findAll() { + Query query = getEntityManager().createNamedQuery("StoryArc.findAll"); + return query.getResultList(); + } + + @Override + public StoryArcEntity store(StoryArcEntity entity) { + EntityManager em = getEntityManager(); + em.getTransaction().begin(); + em.persist(entity); + em.getTransaction().commit(); + return entity; + } + + @Override + public void delete(StoryArcEntity entity) { + EntityManager em = getEntityManager(); + em.getTransaction().begin(); + em.remove(entity); + em.getTransaction().commit(); + } +} diff --git a/java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/dal/VolumeDao.java b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/dal/VolumeDao.java new file mode 100644 index 0000000..26759bd --- /dev/null +++ b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/dal/VolumeDao.java @@ -0,0 +1,24 @@ +package com.ibtp.kontor.comics.dal; + +import com.ibtp.kontor.comics.entity.VolumeEntity; + +import java.util.Collection; +import java.util.List; + +/** + * Created by TPEETZ on 19.01.2015. + */ +interface VolumeDao { + + public VolumeEntity getById(Long id); + + public Collection findByIds(List ids); + + public Collection findByTitle(String title); + + public Collection findAll(); + + public VolumeEntity store(VolumeEntity entity); + + public void delete(VolumeEntity entity); +} diff --git a/java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/dal/VolumeImpl.java b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/dal/VolumeImpl.java new file mode 100644 index 0000000..bb20a4a --- /dev/null +++ b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/dal/VolumeImpl.java @@ -0,0 +1,57 @@ +package com.ibtp.kontor.comics.dal; + +import com.ibtp.kontor.comics.entity.VolumeEntity; +import com.ibtp.kontor.dal.BaseImpl; + +import javax.persistence.EntityManager; +import javax.persistence.Query; +import java.util.Collection; +import java.util.List; + +/** + * Created by TPEETZ on 28.01.2015. + */ +public class VolumeImpl extends BaseImpl implements VolumeDao { + + @Override + public VolumeEntity getById(Long id) { + Query query = getEntityManager().createNamedQuery("Volume.findById"); + query.setParameter("id", id); + return (VolumeEntity)query.getSingleResult(); + } + + @Override + public Collection findByIds(List ids) { + return null; + } + + @Override + public Collection findByTitle(String title) { + Query query = getEntityManager().createNamedQuery("Volume.findByTitle"); + query.setParameter("title", title); + return query.getResultList(); + } + + @Override + public Collection findAll() { + Query query = getEntityManager().createNamedQuery("Volume.findAll"); + return query.getResultList(); + } + + @Override + public VolumeEntity store(VolumeEntity entity) { + EntityManager em = getEntityManager(); + em.getTransaction().begin(); + em.persist(entity); + em.getTransaction().commit(); + return entity; + } + + @Override + public void delete(VolumeEntity entity) { + EntityManager em = getEntityManager(); + em.getTransaction().begin(); + em.remove(entity); + em.getTransaction().commit(); + } +} diff --git a/java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/entity/ArtistEntity.java b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/entity/ArtistEntity.java new file mode 100644 index 0000000..50ede83 --- /dev/null +++ b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/entity/ArtistEntity.java @@ -0,0 +1,72 @@ +package com.ibtp.kontor.comics.entity; + +import javax.persistence.*; +import java.util.ArrayList; +import java.util.Collection; + +/** + * Created by TPEETZ on 16.01.2015. + */ +@NamedQueries({ + @NamedQuery(name="Artist.findAll", query="SELECT a from ArtistEntity as a"), + @NamedQuery(name="Artist.findByName", query="SELECT a from ArtistEntity as a WHERE a.name = :name") +}) + +@Entity +@Table(name="ARTIST") +public class ArtistEntity { + + private Long id; + + private String name; + + private Collection writtenIssues = new ArrayList(); + + private Collection inkedIssues = new ArrayList(); + + private Collection penciledIssues = new ArrayList(); + + public ArtistEntity(String name) { + setName(name); + } + + public ArtistEntity() {} + + @Id + @GeneratedValue(strategy=GenerationType.AUTO) + Long getId() { return id; } + + @SuppressWarnings("unused") + private void setId(Long id) { this.id = id; } + + @Column + String getName() { return name; } + + void setName(String name) { this.name = name; } + + public void setWrittenIssues(Collection writtenIssues) { this.writtenIssues = writtenIssues; } + + @OneToMany(mappedBy="writer", cascade=CascadeType.REMOVE) + public Collection getWrittenIssues() { + return writtenIssues; + } + + public void setInkedIssues(Collection inkedIssues) { this.inkedIssues = inkedIssues; } + + @OneToMany(mappedBy="inker", cascade=CascadeType.REMOVE) + public Collection getInkedIssues() { + return inkedIssues; + } + + public void setPenciledIssues(Collection penciledIssues) { this.penciledIssues = penciledIssues; } + + @OneToMany(mappedBy="penciler", cascade=CascadeType.REMOVE) + public Collection getPenciledIssues() { + return penciledIssues; + } + + @Override + public String toString() { + return "Artist[" + "id=" + getId() + ",name=" + getName() + "]"; + } +} diff --git a/java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/entity/ComicEntity.java b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/entity/ComicEntity.java new file mode 100644 index 0000000..2d21c10 --- /dev/null +++ b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/entity/ComicEntity.java @@ -0,0 +1,81 @@ +package com.ibtp.kontor.comics.entity; + +import javax.persistence.*; +import java.util.ArrayList; +import java.util.Collection; + +/** + * Created by thomas on 17.01.15. + */ +@NamedQueries({ + @NamedQuery(name="Comic.findAll", query="SELECT c from ComicEntity as c"), + @NamedQuery(name="Comic.findByTitle", query="SELECT c from ComicEntity as c WHERE c.title = :title") +}) +@Entity +@Table(name = "COMIC") +public class ComicEntity { + + private Long id; + + private String title; + + private Boolean completed; + + private Boolean currentOrder; + + private Collection issues = new ArrayList(); + + private Collection storyArc = new ArrayList(); + + private Collection volumes = new ArrayList(); + + private PublisherEntity publisher; + + @Id + @GeneratedValue(strategy=GenerationType.AUTO) + public Long getId() { return id; } + + @SuppressWarnings("unused") + private void setId(Long id) { this.id = id; } + + @Column + public String getTitle() { return title; } + + public void setTitle(String title) { this.title = title; } + + @Column + public Boolean getCompleted() { return completed; } + + public Boolean isCompleted() { return completed; } + + public void setCompleted(Boolean completed) { this.completed = completed; } + + @Column + public Boolean getCurrentOrder() { return currentOrder; } + + public Boolean isCurrentOrder() { return currentOrder; } + + public void setCurrentOrder(Boolean currentOrder) { this.currentOrder = currentOrder; } + + public void setIssues(Collection issues) { this.issues = issues; } + + @OneToMany(mappedBy="comic", cascade=CascadeType.REMOVE) + public Collection getIssues() { return issues; } + + public void setStoryArc(Collection storyArc) { this.storyArc = storyArc; } + + @OneToMany(mappedBy="comic", cascade=CascadeType.REMOVE) + public Collection getStoryArc() { return storyArc; } + + public void setVolumes(Collection volumes) { this.volumes = volumes; } + + @OneToMany(mappedBy="comic", cascade=CascadeType.REMOVE) + public Collection getVolumes() { return volumes; } + + @ManyToOne + public PublisherEntity getPublisher() { return publisher; } + + public void setPublisher(PublisherEntity publisher) { + this.publisher = publisher; + } +} diff --git a/java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/entity/IssueEntity.java b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/entity/IssueEntity.java new file mode 100644 index 0000000..93a7662 --- /dev/null +++ b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/entity/IssueEntity.java @@ -0,0 +1,75 @@ +package com.ibtp.kontor.comics.entity; + +import javax.persistence.*; + +/** + * Created by thomas on 18.01.15. + */ +@NamedQueries({ + @NamedQuery(name="Issue.findAll", query="SELECT i from IssueEntity as i"), + @NamedQuery(name="Issue.findByNumber", query="SELECT i from IssueEntity as i WHERE i.number = :number") +}) + +@Entity +@Table(name = "ISSUE") +public class IssueEntity { + + private Long id; + + private String number; + + private Boolean completed; + + private ComicEntity comic; + + private ArtistEntity writer; + + private ArtistEntity inker; + + private ArtistEntity penciler; + + private StoryArcEntity storyArc; + + @Id + @GeneratedValue(strategy=GenerationType.AUTO) + public Long getId() { return id; } + + @SuppressWarnings("unused") + private void setId(Long id) { this.id = id; } + + @Column + public String getNumber() { return number; } + + public void setNumber(String number) { this.number = number; } + + @Column + public Boolean getCompleted() { return completed; } + public Boolean isCompleted() { return completed; } + + public void setCompleted(Boolean completed) { this.completed = completed; } + + public void setComic(ComicEntity comic) { this.comic = comic; } + + @ManyToOne + public ComicEntity getComic() { return comic; } + + public void setWriter(ArtistEntity writer) { this.writer = writer; } + + @ManyToOne + public ArtistEntity getWriter() { return writer; } + + public void setInker(ArtistEntity inker) { this.inker = inker; } + + @ManyToOne + public ArtistEntity getInker() { return inker; } + + public void setPenciler(ArtistEntity penciler) { this.penciler = penciler; } + + @ManyToOne + public ArtistEntity getPenciler() { return penciler; } + + public void setStoryArc(StoryArcEntity storyArc) { this.storyArc = storyArc; } + + @ManyToOne + public StoryArcEntity getStoryArc() { return storyArc; } +} diff --git a/java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/entity/PublisherEntity.java b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/entity/PublisherEntity.java new file mode 100644 index 0000000..9aec40e --- /dev/null +++ b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/entity/PublisherEntity.java @@ -0,0 +1,47 @@ +package com.ibtp.kontor.comics.entity; + +import javax.persistence.*; +import java.util.ArrayList; +import java.util.Collection; + +/** + * Created by thomas on 17.01.15. + */ +@NamedQueries({ + @NamedQuery(name="Publisher.findAll", query="SELECT p from PublisherEntity as p"), + @NamedQuery(name="Publisher.findByName", query="SELECT p from PublisherEntity as p WHERE p.name = :name") +}) + +@Entity +@Table(name = "PUBLISHER") +public class PublisherEntity { + + private Long id; + + private String name; + + private Collection comic = new ArrayList(); + + public PublisherEntity() {} + + public PublisherEntity(String name) { + setName(name); + } + + @Id + @GeneratedValue(strategy= GenerationType.AUTO) + public Long getId() { return id; } + + @SuppressWarnings("unused") + private void setId(Long id) { this.id = id; } + + @Column + public String getName() { return name; } + + void setName(String name) { this.name = name; } + + public void setComic(Collection comic) { this.comic = comic; } + + @OneToMany(mappedBy="publisher", cascade=CascadeType.REMOVE) + public Collection getComic() { return comic; } +} diff --git a/java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/entity/StoryArcEntity.java b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/entity/StoryArcEntity.java new file mode 100644 index 0000000..e3ea22b --- /dev/null +++ b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/entity/StoryArcEntity.java @@ -0,0 +1,48 @@ +package com.ibtp.kontor.comics.entity; + +import javax.persistence.*; +import java.util.ArrayList; +import java.util.Collection; + +/** + * Created by thomas on 17.01.15. + */ +@NamedQueries({ + @NamedQuery(name="StoryArc.findAll", query="SELECT s from StoryArcEntity as s"), + @NamedQuery(name="StoryArc.findByTitle", query="SELECT s from StoryArcEntity as s WHERE s.title = :title") +}) + +@Entity +@Table(name = "STORYARC") +public class StoryArcEntity { + + private Long id; + + private String title; + + private Collection issues = new ArrayList(); + + private ComicEntity comic; + + @Id + @GeneratedValue(strategy=GenerationType.AUTO) + public Long getId() { return id; } + + @SuppressWarnings("unused") + private void setId(Long id) { this.id = id; } + + @Column + public String getTitle() { return title; } + + public void setTitle(String title) { this.title = title; } + + public void setIssues(Collection issues) { this.issues = issues; } + + @OneToMany(mappedBy="storyArc", cascade=CascadeType.REMOVE) + public Collection getIssues() { return issues; } + + public void setComic(ComicEntity comic) { this.comic = comic; } + + @ManyToOne + public ComicEntity getComic() { return comic; } +} diff --git a/java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/entity/VolumeEntity.java b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/entity/VolumeEntity.java new file mode 100644 index 0000000..6f896ad --- /dev/null +++ b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/entity/VolumeEntity.java @@ -0,0 +1,40 @@ +package com.ibtp.kontor.comics.entity; + + +import javax.persistence.*; + +/** + * Created by TPEETZ on 19.01.2015. + */ +@NamedQueries({ + @NamedQuery(name="Volume.findAll", query="SELECT v from VolumeEntity as v"), + @NamedQuery(name="Volume.findByTitle", query="SELECT v from VolumeEntity as v WHERE v.title = :title") +}) + +@Entity +@Table(name = "VOLUME") +public class VolumeEntity { + + private Long id; + + private String title; + + private ComicEntity comic; + + @Id + @GeneratedValue(strategy= GenerationType.AUTO) + public Long getId() { return id; } + + @SuppressWarnings("unused") + private void setId(Long id) { this.id = id; } + + @Column + public String getTitle() { return title; } + + public void setTitle(String title) { this.title = title; } + + @ManyToOne + public ComicEntity getComic() { return comic; } + + public void setComic(ComicEntity comic) { this.comic = comic; } +} diff --git a/java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/view/ComicsMenu.java b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/view/ComicsMenu.java new file mode 100644 index 0000000..5201a11 --- /dev/null +++ b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/comics/view/ComicsMenu.java @@ -0,0 +1,13 @@ +package com.ibtp.kontor.comics.view; + +import javax.swing.*; + +/** + * Created by tpeetz on 12.02.2015. + */ +public class ComicsMenu extends JMenu { + + public ComicsMenu() { + super("Comics"); + } +} diff --git a/java-ee/KontorApp/src/main/java/com/ibtp/kontor/dal/BaseImpl.java b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/dal/BaseImpl.java new file mode 100644 index 0000000..fa22722 --- /dev/null +++ b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/dal/BaseImpl.java @@ -0,0 +1,21 @@ +package com.ibtp.kontor.dal; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.persistence.EntityManager; + +/** + * Created by TPEETZ on 16.01.2015. + */ +public class BaseImpl { + + protected BaseImpl() { + Logger logger = LoggerFactory.getLogger(this.getClass().getName()); + logger.info("BaseImpl started"); + } + + protected EntityManager getEntityManager() { + return DatabaseManager.getDatabase().getEntityManager(); + } +} diff --git a/java-ee/KontorApp/src/main/java/com/ibtp/kontor/dal/Database.java b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/dal/Database.java new file mode 100644 index 0000000..67dbda9 --- /dev/null +++ b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/dal/Database.java @@ -0,0 +1,11 @@ +package com.ibtp.kontor.dal; + +import javax.persistence.EntityManager; + +/** + * Created by TPEETZ on 21.01.2015. + */ +public interface Database { + + public EntityManager getEntityManager(); +} diff --git a/java-ee/KontorApp/src/main/java/com/ibtp/kontor/dal/DatabaseManager.java b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/dal/DatabaseManager.java new file mode 100644 index 0000000..0ccc25d --- /dev/null +++ b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/dal/DatabaseManager.java @@ -0,0 +1,23 @@ +package com.ibtp.kontor.dal; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * Created by TPEETZ on 22.01.2015. + */ +public class DatabaseManager { + + private static Database database; + private static Logger logger = LoggerFactory.getLogger(DatabaseManager.class.getName()); + + public static Database getDatabase() { + logger.info("return " + database.toString()); + return database; + } + + public static void setDatabase(Database database) { + logger.info("set " + database.toString()); + DatabaseManager.database = database; + } +} diff --git a/java-ee/KontorApp/src/main/java/com/ibtp/kontor/dal/LocalDatabase.java b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/dal/LocalDatabase.java new file mode 100644 index 0000000..37cc68b --- /dev/null +++ b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/dal/LocalDatabase.java @@ -0,0 +1,103 @@ +package com.ibtp.kontor.dal; + +import org.hibernate.jpa.HibernatePersistenceProvider; +import org.hsqldb.Server; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.persistence.EntityManager; +import javax.persistence.EntityManagerFactory; +import javax.persistence.Persistence; +import javax.persistence.spi.PersistenceProvider; +import javax.persistence.spi.PersistenceProviderResolver; +import javax.persistence.spi.PersistenceProviderResolverHolder; +import java.io.PrintWriter; +import java.util.Arrays; +import java.util.List; + +/** + * Created by TPEETZ on 19.01.2015. + */ +public class LocalDatabase implements Database { + + private static Server server; + private static EntityManagerFactory factory; + private static EntityManager em; + private static Logger logger = LoggerFactory.getLogger(LocalDatabase.class.getName()); + + private LocalDatabase() { + logger.info("LocalDatabase started"); + } + + private static void assureDatabaseRunning() { + if (LocalDatabase.server == null) { + LocalDatabase.startDatabase(); + } + } + + private static void startDatabase() { + Logger logger = LoggerFactory.getLogger(LocalDatabase.class.getName()); + logger.info("startDatabase as kontor in hsqldb_databases/kontor"); + LocalDatabase.server = new Server(); + LocalDatabase.server.setAddress("localhost"); + LocalDatabase.server.setDatabaseName(0, "kontor"); + LocalDatabase.server.setDatabasePath(0, "file:hsqldb_databases/kontor"); + LocalDatabase.server.setPort(2345); + LocalDatabase.server.setTrace(true); + LocalDatabase.server.setLogWriter(new PrintWriter(System.out)); + LocalDatabase.server.start(); + } + + private static void stopDatabase() { + server.shutdown(); + } + private static EntityManagerFactory getFactory() { + if (LocalDatabase.factory == null) { + LocalDatabase.assureDatabaseRunning(); + PersistenceProviderResolverHolder.setPersistenceProviderResolver(new PersistenceProviderResolver() { + private final List providers_ = Arrays.asList((PersistenceProvider) new HibernatePersistenceProvider()); + + @Override + public void clearCachedProviders() { + // Auto-generated method stub + } + + @Override + public List getPersistenceProviders() { + return providers_; + } + }); + LocalDatabase.factory = Persistence.createEntityManagerFactory("com.ibtp.kontor"); + logger.info("EntityManagerFactory(com.ibtp.kontor) created"); + } + return LocalDatabase.factory; + } + + private static EntityManager getSingleEntityManager() { + return LocalDatabase.em; + } + + private static void setSingleEntityManager(EntityManager manager) { + LocalDatabase.em = manager; + } + + @Override + public EntityManager getEntityManager() { + if (getSingleEntityManager() == null) { + setSingleEntityManager(getFactory().createEntityManager()); + logger.info("EntityManager created"); + } + return getSingleEntityManager(); + } + + @Override + public String toString() { + String serverMessage; + if (LocalDatabase.server == null) { + serverMessage = "server:null"; + } else { + serverMessage = LocalDatabase.server.toString(); + } + return LocalDatabase.class.getName() + " " + serverMessage; + } +} diff --git a/java-ee/KontorApp/src/main/java/com/ibtp/kontor/library/dal/ArticleDao.java b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/library/dal/ArticleDao.java new file mode 100644 index 0000000..f9cd144 --- /dev/null +++ b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/library/dal/ArticleDao.java @@ -0,0 +1,23 @@ +package com.ibtp.kontor.library.dal; + +import com.ibtp.kontor.library.entity.ArticleEntity; + +import java.util.List; + +/** + * Created by tpeetz on 23.01.2015. + */ +interface ArticleDao { + + public ArticleEntity getById(Long id); + + public List findByIds(List ids); + + public List findAll(); + + public List findByTitle(String title); + + public ArticleEntity store(ArticleEntity entity); + + public void delete(ArticleEntity entity); +} diff --git a/java-ee/KontorApp/src/main/java/com/ibtp/kontor/library/dal/ArticleImpl.java b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/library/dal/ArticleImpl.java new file mode 100644 index 0000000..ada92d9 --- /dev/null +++ b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/library/dal/ArticleImpl.java @@ -0,0 +1,64 @@ +package com.ibtp.kontor.library.dal; + +import com.ibtp.kontor.dal.BaseImpl; +import com.ibtp.kontor.library.entity.ArticleEntity; + +import javax.persistence.EntityManager; +import javax.persistence.Query; +import java.util.List; + +/** + * Created by tpeetz on 23.01.2015. + */ +public class ArticleImpl extends BaseImpl implements ArticleDao { + + @Override + public ArticleEntity getById(Long id) { + Query query = getEntityManager().createNamedQuery("Article.findById"); + query.setParameter("id", id); + return (ArticleEntity)query.getSingleResult(); + } + + @Override + public List findByIds(List ids) { + return null; + } + + @Override + public List findAll() { + Query query = getEntityManager().createNamedQuery("Article.findAll"); + //noinspection unchecked + return query.getResultList(); + } + + @Override + public List findByTitle(String title) { + Query query = getEntityManager().createNamedQuery("Article.findByTitle"); + query.setParameter("title", title); + //noinspection unchecked + return query.getResultList(); + } + + public ArticleEntity addArticle(String title) { + ArticleEntity entity = new ArticleEntity(title); + store(entity); + return entity; + } + + @Override + public ArticleEntity store(ArticleEntity entity) { + EntityManager em = getEntityManager(); + em.getTransaction().begin(); + em.persist(entity); + em.getTransaction().commit(); + return entity; + } + + @Override + public void delete(ArticleEntity entity) { + EntityManager em = getEntityManager(); + em.getTransaction().begin(); + em.remove(entity); + em.getTransaction().commit(); + } +} diff --git a/java-ee/KontorApp/src/main/java/com/ibtp/kontor/library/dal/AuthorDao.java b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/library/dal/AuthorDao.java new file mode 100644 index 0000000..85f4c83 --- /dev/null +++ b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/library/dal/AuthorDao.java @@ -0,0 +1,25 @@ +package com.ibtp.kontor.library.dal; + +import com.ibtp.kontor.library.entity.AuthorEntity; + +import java.util.List; + +/** + * Created by tpeetz on 23.01.2015. + */ +interface AuthorDao { + + public AuthorEntity getById(Long id); + + public List findByIds(List ids); + + public List findByName(String name); + + public List findAll(); + + public AuthorEntity addAuthor(String name); + + public AuthorEntity store(AuthorEntity entity); + + public void delete(AuthorEntity entity); +} diff --git a/java-ee/KontorApp/src/main/java/com/ibtp/kontor/library/dal/AuthorImpl.java b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/library/dal/AuthorImpl.java new file mode 100644 index 0000000..573d7d9 --- /dev/null +++ b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/library/dal/AuthorImpl.java @@ -0,0 +1,65 @@ +package com.ibtp.kontor.library.dal; + +import com.ibtp.kontor.dal.BaseImpl; +import com.ibtp.kontor.library.entity.AuthorEntity; + +import javax.persistence.EntityManager; +import javax.persistence.Query; +import java.util.List; + +/** + * Created by thomas on 23.01.15. + */ +public class AuthorImpl extends BaseImpl implements AuthorDao { + + public AuthorImpl() {} + + @Override + public AuthorEntity getById(Long id) { + Query query = getEntityManager().createNamedQuery("Author.findById"); + query.setParameter("id", id); + return (AuthorEntity)query.getSingleResult(); + } + + @Override + public List findByIds(List ids) { + return null; + } + + @Override + public List findByName(String name) { + Query query = getEntityManager().createNamedQuery("Author.findByName"); + query.setParameter("name", name); + return query.getResultList(); + } + + @Override + public List findAll() { + Query query = getEntityManager().createNamedQuery("Author.findAll"); + return query.getResultList(); + } + + @Override + public AuthorEntity addAuthor(String name) { + AuthorEntity author = new AuthorEntity(name); + store(author); + return author; + } + + @Override + public AuthorEntity store(AuthorEntity entity) { + EntityManager em = getEntityManager(); + em.getTransaction().begin(); + em.persist(entity); + em.getTransaction().commit(); + return entity; + } + + @Override + public void delete(AuthorEntity entity) { + EntityManager em = getEntityManager(); + em.getTransaction().begin(); + em.remove(entity); + em.getTransaction().commit(); + } +} diff --git a/java-ee/KontorApp/src/main/java/com/ibtp/kontor/library/dal/BookDao.java b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/library/dal/BookDao.java new file mode 100644 index 0000000..d89a1b7 --- /dev/null +++ b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/library/dal/BookDao.java @@ -0,0 +1,22 @@ +package com.ibtp.kontor.library.dal; + +import com.ibtp.kontor.library.entity.BookEntity; + +import java.util.Collection; +import java.util.List; + +/** + * Created by tpeetz on 23.01.2015. + */ +interface BookDao { + + public BookEntity getById(Long id); + + public Collection findByIds(List ids); + + public Collection findByName(String name); + + public BookEntity store(BookEntity entity); + + public void delete(BookEntity entity); +} diff --git a/java-ee/KontorApp/src/main/java/com/ibtp/kontor/library/dal/BookImpl.java b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/library/dal/BookImpl.java new file mode 100644 index 0000000..63f0ab1 --- /dev/null +++ b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/library/dal/BookImpl.java @@ -0,0 +1,38 @@ +package com.ibtp.kontor.library.dal; + +import com.ibtp.kontor.dal.BaseImpl; +import com.ibtp.kontor.library.entity.BookEntity; + +import java.util.Collection; +import java.util.List; + +/** + * Created by TPEETZ on 27.01.2015. + */ +public class BookImpl extends BaseImpl implements BookDao { + + @Override + public BookEntity getById(Long id) { + return null; + } + + @Override + public Collection findByIds(List ids) { + return null; + } + + @Override + public Collection findByName(String name) { + return null; + } + + @Override + public BookEntity store(BookEntity entity) { + return null; + } + + @Override + public void delete(BookEntity entity) { + + } +} diff --git a/java-ee/KontorApp/src/main/java/com/ibtp/kontor/library/dal/FileDao.java b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/library/dal/FileDao.java new file mode 100644 index 0000000..f123e69 --- /dev/null +++ b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/library/dal/FileDao.java @@ -0,0 +1,22 @@ +package com.ibtp.kontor.library.dal; + +import com.ibtp.kontor.library.entity.FileEntity; + +import java.util.Collection; +import java.util.List; + +/** + * Created by tpeetz on 23.01.2015. + */ +interface FileDao { + + public FileEntity getById(Long id); + + public Collection findByIds(List ids); + + public Collection findByName(String name); + + public FileEntity store(FileEntity entity); + + public void delete(FileEntity entity); +} diff --git a/java-ee/KontorApp/src/main/java/com/ibtp/kontor/library/dal/FileImpl.java b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/library/dal/FileImpl.java new file mode 100644 index 0000000..1af2900 --- /dev/null +++ b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/library/dal/FileImpl.java @@ -0,0 +1,38 @@ +package com.ibtp.kontor.library.dal; + +import com.ibtp.kontor.dal.BaseImpl; +import com.ibtp.kontor.library.entity.FileEntity; + +import java.util.Collection; +import java.util.List; + +/** + * Created by TPEETZ on 27.01.2015. + */ +public class FileImpl extends BaseImpl implements FileDao { + + @Override + public FileEntity getById(Long id) { + return null; + } + + @Override + public Collection findByIds(List ids) { + return null; + } + + @Override + public Collection findByName(String name) { + return null; + } + + @Override + public FileEntity store(FileEntity entity) { + return null; + } + + @Override + public void delete(FileEntity entity) { + + } +} diff --git a/java-ee/KontorApp/src/main/java/com/ibtp/kontor/library/dal/TitleDao.java b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/library/dal/TitleDao.java new file mode 100644 index 0000000..81da92b --- /dev/null +++ b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/library/dal/TitleDao.java @@ -0,0 +1,22 @@ +package com.ibtp.kontor.library.dal; + +import com.ibtp.kontor.library.entity.TitleEntity; + +import java.util.Collection; +import java.util.List; + +/** + * Created by tpeetz on 23.01.2015. + */ +interface TitleDao { + + public TitleEntity getById(Long id); + + public Collection findByIds(List ids); + + public Collection findByName(String name); + + public TitleEntity store(TitleEntity entity); + + public void delete(TitleEntity entity); +} diff --git a/java-ee/KontorApp/src/main/java/com/ibtp/kontor/library/dal/TitleImpl.java b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/library/dal/TitleImpl.java new file mode 100644 index 0000000..410c2c5 --- /dev/null +++ b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/library/dal/TitleImpl.java @@ -0,0 +1,38 @@ +package com.ibtp.kontor.library.dal; + +import com.ibtp.kontor.dal.BaseImpl; +import com.ibtp.kontor.library.entity.TitleEntity; + +import java.util.Collection; +import java.util.List; + +/** + * Created by TPEETZ on 27.01.2015. + */ +public class TitleImpl extends BaseImpl implements TitleDao { + + @Override + public TitleEntity getById(Long id) { + return null; + } + + @Override + public Collection findByIds(List ids) { + return null; + } + + @Override + public Collection findByName(String name) { + return null; + } + + @Override + public TitleEntity store(TitleEntity entity) { + return null; + } + + @Override + public void delete(TitleEntity entity) { + + } +} diff --git a/java-ee/KontorApp/src/main/java/com/ibtp/kontor/library/entity/ArticleEntity.java b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/library/entity/ArticleEntity.java new file mode 100644 index 0000000..d61eda5 --- /dev/null +++ b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/library/entity/ArticleEntity.java @@ -0,0 +1,56 @@ +package com.ibtp.kontor.library.entity; + +import javax.persistence.*; + +/** + * Created by TPEETZ on 23.01.2015. + */ +@NamedQueries({ + @NamedQuery(name="Article.findAll", query="SELECT a from ArticleEntity as a"), + @NamedQuery(name="Article.findByTitle", query="SELECT a from ArticleEntity as a WHERE a.title = :title") +}) + +@Entity +@Table(name = "ARTICLE") +public class ArticleEntity { + + private Long id; + + private String title; + + private AuthorEntity author; + + public ArticleEntity() {} + + public ArticleEntity(String title) { + setTitle(title); + } + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + @Column + public String getTitle() { + return title; + } + + void setTitle(String title) { + this.title = title; + } + + @ManyToOne + public AuthorEntity getAuthor() { + return author; + } + + public void setAuthor(AuthorEntity author) { + this.author = author; + } +} diff --git a/java-ee/KontorApp/src/main/java/com/ibtp/kontor/library/entity/AuthorEntity.java b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/library/entity/AuthorEntity.java new file mode 100644 index 0000000..63a6f4b --- /dev/null +++ b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/library/entity/AuthorEntity.java @@ -0,0 +1,62 @@ +package com.ibtp.kontor.library.entity; + +import javax.persistence.*; +import java.util.ArrayList; +import java.util.Collection; + +/** + * Created by TPEETZ on 23.01.2015. + */ +@NamedQueries({ + @NamedQuery(name="Author.findAll", query="SELECT a from AuthorEntity as a"), + @NamedQuery(name="Author.findById", query="SELECT a from AuthorEntity as a WHERE a.id = :id"), + @NamedQuery(name="Author.findByName", query="SELECT a from AuthorEntity as a WHERE a.name = :name") +}) +@Entity +@Table(name="AUTHOR") +public class AuthorEntity { + + private Long id; + + private String name; + + private Collection books = new ArrayList(); + + private Collection articles = new ArrayList(); + + public AuthorEntity() {} + + public AuthorEntity(String name) { + setName(name); + } + + @Id + @GeneratedValue(strategy= GenerationType.AUTO) + public Long getId() { return id; } + + @SuppressWarnings("unused") + private void setId(Long id) { this.id = id; } + + @Column + public String getName() { return name; } + + void setName(String name) { this.name = name; } + + @OneToMany(mappedBy="author", cascade=CascadeType.REMOVE) + public Collection getBooks() { + return books; + } + + public void setBooks(Collection books) { + this.books = books; + } + + @OneToMany(mappedBy="author", cascade=CascadeType.REMOVE) + public Collection getArticles() { + return articles; + } + + public void setArticles(Collection articles) { + this.articles = articles; + } +} diff --git a/java-ee/KontorApp/src/main/java/com/ibtp/kontor/library/entity/BookEntity.java b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/library/entity/BookEntity.java new file mode 100644 index 0000000..b57705c --- /dev/null +++ b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/library/entity/BookEntity.java @@ -0,0 +1,96 @@ +package com.ibtp.kontor.library.entity; + +import javax.persistence.*; + +/** + * Created by TPEETZ on 23.01.2015. + */ +@Entity +@Table(name = "BOOK") +public class BookEntity { + + private Long id; + + private String title; + + private AuthorEntity author; + + private String publisher; + + private String isbn; + + private Long page; + + private String edition; + + public BookEntity() {} + + public BookEntity(String title) { + setTitle(title); + } + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + public Long getId() { + return id; + } + + /* unused */ + public void setId(Long id) { + this.id = id; + } + + @Column + public String getTitle() { + return title; + } + + void setTitle(String title) { + this.title = title; + } + + @ManyToOne + public AuthorEntity getAuthor() { + return author; + } + + public void setAuthor(AuthorEntity author) { + this.author = author; + } + + @Column + public String getIsbn() { + return isbn; + } + + public void setIsbn(String isbn) { + this.isbn = isbn; + } + + @Column + public Long getPage() { + return page; + } + + public void setPage(Long page) { + this.page = page; + } + + @Column + public String getEdition() { + return edition; + } + + public void setEdition(String edition) { + this.edition = edition; + } + + @Column + public String getPublisher() { + return publisher; + } + + public void setPublisher(String publisher) { + this.publisher = publisher; + } +} diff --git a/java-ee/KontorApp/src/main/java/com/ibtp/kontor/library/entity/FileEntity.java b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/library/entity/FileEntity.java new file mode 100644 index 0000000..05f4577 --- /dev/null +++ b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/library/entity/FileEntity.java @@ -0,0 +1,41 @@ +package com.ibtp.kontor.library.entity; + +import javax.persistence.*; + +/** + * Created by TPEETZ on 23.01.2015. + */ +@Entity +@Table(name = "FILE") +public class FileEntity { + + private Long id; + + private String title; + + public FileEntity() {} + + public FileEntity(String title) { + setTitle(title); + } + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + public Long getId() { + return id; + } + + /* unused */ + public void setId(Long id) { + this.id = id; + } + + @Column + public String getTitle() { + return title; + } + + void setTitle(String title) { + this.title = title; + } +} diff --git a/java-ee/KontorApp/src/main/java/com/ibtp/kontor/library/entity/TitleEntity.java b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/library/entity/TitleEntity.java new file mode 100644 index 0000000..ba25eb9 --- /dev/null +++ b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/library/entity/TitleEntity.java @@ -0,0 +1,27 @@ +package com.ibtp.kontor.library.entity; + +import javax.persistence.*; + +/** + * Created by TPEETZ on 23.01.2015. + */ +@Entity +@Table(name = "TITLE") +public class TitleEntity { + + private Long id; + + private String title; + + @Id + @GeneratedValue(strategy= GenerationType.AUTO) + public Long getId() { return id; } + + @SuppressWarnings("unused") + private void setId(Long id) { this.id = id; } + + @Column + public String getTitle() { return title; } + + public void setTitle(String title) { this.title = title; } +} diff --git a/java-ee/KontorApp/src/main/java/com/ibtp/kontor/library/view/LibraryMenu.java b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/library/view/LibraryMenu.java new file mode 100644 index 0000000..0b97e27 --- /dev/null +++ b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/library/view/LibraryMenu.java @@ -0,0 +1,13 @@ +package com.ibtp.kontor.library.view; + +import javax.swing.*; + +/** + * Created by tpeetz on 12.02.2015. + */ +public class LibraryMenu extends JMenu { + + public LibraryMenu() { + super("Library"); + } +} diff --git a/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/dal/BaseSetDao.java b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/dal/BaseSetDao.java new file mode 100644 index 0000000..29692d4 --- /dev/null +++ b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/dal/BaseSetDao.java @@ -0,0 +1,22 @@ +package com.ibtp.kontor.tradingcards.dal; + +import com.ibtp.kontor.tradingcards.entity.BaseSetEntity; + +import java.util.Collection; +import java.util.List; + +/** + * Created by TPEETZ on 27.01.2015. + */ +interface BaseSetDao { + + public BaseSetEntity getById(Long id); + + public Collection findByIds(List ids); + + public Collection findByName(String name); + + public BaseSetEntity store(BaseSetEntity entity); + + public void delete(BaseSetEntity entity); +} diff --git a/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/dal/BaseSetImpl.java b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/dal/BaseSetImpl.java new file mode 100644 index 0000000..9e584a4 --- /dev/null +++ b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/dal/BaseSetImpl.java @@ -0,0 +1,51 @@ +package com.ibtp.kontor.tradingcards.dal; + +import com.ibtp.kontor.dal.BaseImpl; +import com.ibtp.kontor.tradingcards.entity.BaseSetEntity; + +import javax.persistence.EntityManager; +import javax.persistence.Query; +import java.util.Collection; +import java.util.List; + +/** + * Created by TPEETZ on 27.01.2015. + */ +public class BaseSetImpl extends BaseImpl implements BaseSetDao { + + @Override + public BaseSetEntity getById(Long id) { + Query query = getEntityManager().createNamedQuery("BaseSet.findById"); + query.setParameter("id", id); + return (BaseSetEntity)query.getSingleResult(); + } + + @Override + public Collection findByIds(List ids) { + return null; + } + + @Override + public Collection findByName(String name) { + Query query = getEntityManager().createNamedQuery("BaseSet.findByName"); + query.setParameter("name", name); + return query.getResultList(); + } + + @Override + public BaseSetEntity store(BaseSetEntity entity) { + EntityManager em = getEntityManager(); + em.getTransaction().begin(); + em.persist(entity); + em.getTransaction().commit(); + return entity; + } + + @Override + public void delete(BaseSetEntity entity) { + EntityManager em = getEntityManager(); + em.getTransaction().begin(); + em.remove(entity); + em.getTransaction().commit(); + } +} diff --git a/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/dal/InsertDao.java b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/dal/InsertDao.java new file mode 100644 index 0000000..c68790f --- /dev/null +++ b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/dal/InsertDao.java @@ -0,0 +1,22 @@ +package com.ibtp.kontor.tradingcards.dal; + +import com.ibtp.kontor.tradingcards.entity.InsertEntity; + +import java.util.Collection; +import java.util.List; + +/** + * Created by TPEETZ on 27.01.2015. + */ +interface InsertDao { + + public InsertEntity getById(Long id); + + public Collection findByIds(List ids); + + public Collection findByName(String name); + + public InsertEntity store(InsertEntity entity); + + public void delete(InsertEntity entity); +} diff --git a/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/dal/InsertImpl.java b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/dal/InsertImpl.java new file mode 100644 index 0000000..598763c --- /dev/null +++ b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/dal/InsertImpl.java @@ -0,0 +1,38 @@ +package com.ibtp.kontor.tradingcards.dal; + +import com.ibtp.kontor.dal.BaseImpl; +import com.ibtp.kontor.tradingcards.entity.InsertEntity; + +import java.util.Collection; +import java.util.List; + +/** + * Created by tpeetz on 27.01.2015. + */ +public class InsertImpl extends BaseImpl implements InsertDao { + + @Override + public InsertEntity getById(Long id) { + return null; + } + + @Override + public Collection findByIds(List ids) { + return null; + } + + @Override + public Collection findByName(String name) { + return null; + } + + @Override + public InsertEntity store(InsertEntity entity) { + return null; + } + + @Override + public void delete(InsertEntity entity) { + + } +} diff --git a/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/dal/ManufacturerDao.java b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/dal/ManufacturerDao.java new file mode 100644 index 0000000..451d18b --- /dev/null +++ b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/dal/ManufacturerDao.java @@ -0,0 +1,29 @@ +package com.ibtp.kontor.tradingcards.dal; + + +import com.ibtp.kontor.tradingcards.entity.BaseSetEntity; +import com.ibtp.kontor.tradingcards.entity.ManufacturerEntity; + +import java.util.Collection; +import java.util.List; + +/** + * + * @author tpeetz + */ +interface ManufacturerDao { + + public ManufacturerEntity getById(Long id); + + public Collection findByIds(List ids); + + public Collection findByName(String name); + + public ManufacturerEntity assignBaseSet(ManufacturerEntity manufacturer, BaseSetEntity baseSet); + + public ManufacturerEntity addManufacturer(String name); + + public ManufacturerEntity store(ManufacturerEntity entity); + + public void delete(ManufacturerEntity entity); +} diff --git a/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/dal/ManufacturerImpl.java b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/dal/ManufacturerImpl.java new file mode 100644 index 0000000..58c2fd6 --- /dev/null +++ b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/dal/ManufacturerImpl.java @@ -0,0 +1,65 @@ +package com.ibtp.kontor.tradingcards.dal; + +import com.ibtp.kontor.dal.BaseImpl; +import com.ibtp.kontor.tradingcards.entity.BaseSetEntity; +import com.ibtp.kontor.tradingcards.entity.ManufacturerEntity; + +import java.util.List; +import javax.persistence.EntityManager; +import javax.persistence.Query; + +/** + * + * @author tpeetz + */ +public class ManufacturerImpl extends BaseImpl implements ManufacturerDao { + + @Override + public ManufacturerEntity getById(Long id) { + Query q = getEntityManager().createNamedQuery("Manufacturer.findById"); + q.setParameter("id", id); + return (ManufacturerEntity)q.getSingleResult(); + } + + @Override + public List findByIds(List ids) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @SuppressWarnings("unchecked") + @Override + public List findByName(String name) { + Query q = getEntityManager().createNamedQuery("Manufacturer.findByName"); + q.setParameter("name", name); + return q.getResultList(); + } + + @Override + public ManufacturerEntity assignBaseSet(ManufacturerEntity comic, BaseSetEntity baseSet) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @Override + public ManufacturerEntity addManufacturer(String name) { + ManufacturerEntity manufacturer = new ManufacturerEntity(name); + store(manufacturer); + return manufacturer; + } + + @Override + public ManufacturerEntity store(ManufacturerEntity entity) { + EntityManager em = getEntityManager(); + em.getTransaction().begin(); + em.persist(entity); + em.getTransaction().commit(); + return entity; + } + + @Override + public void delete(ManufacturerEntity entity) { + EntityManager em = getEntityManager(); + em.getTransaction().begin(); + em.remove(entity); + em.getTransaction().commit(); + } +} diff --git a/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/dal/ParallelSetDao.java b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/dal/ParallelSetDao.java new file mode 100644 index 0000000..c4d36ba --- /dev/null +++ b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/dal/ParallelSetDao.java @@ -0,0 +1,22 @@ +package com.ibtp.kontor.tradingcards.dal; + +import com.ibtp.kontor.tradingcards.entity.ParallelSetEntity; + +import java.util.Collection; +import java.util.List; + +/** + * Created by TPEETZ on 27.01.2015. + */ +interface ParallelSetDao { + + public ParallelSetEntity getById(Long id); + + public Collection findByIds(List ids); + + public Collection findByName(String name); + + public ParallelSetEntity store(ParallelSetEntity entity); + + public void delete(ParallelSetEntity entity); +} diff --git a/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/dal/ParallelSetImpl.java b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/dal/ParallelSetImpl.java new file mode 100644 index 0000000..cb604a0 --- /dev/null +++ b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/dal/ParallelSetImpl.java @@ -0,0 +1,38 @@ +package com.ibtp.kontor.tradingcards.dal; + +import com.ibtp.kontor.dal.BaseImpl; +import com.ibtp.kontor.tradingcards.entity.ParallelSetEntity; + +import java.util.Collection; +import java.util.List; + +/** + * Created by tpeetz on 27.01.2015. + */ +public class ParallelSetImpl extends BaseImpl implements ParallelSetDao { + + @Override + public ParallelSetEntity getById(Long id) { + return null; + } + + @Override + public Collection findByIds(List ids) { + return null; + } + + @Override + public Collection findByName(String name) { + return null; + } + + @Override + public ParallelSetEntity store(ParallelSetEntity entity) { + return null; + } + + @Override + public void delete(ParallelSetEntity entity) { + + } +} diff --git a/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/dal/PlayerDao.java b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/dal/PlayerDao.java new file mode 100644 index 0000000..11d045e --- /dev/null +++ b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/dal/PlayerDao.java @@ -0,0 +1,24 @@ +package com.ibtp.kontor.tradingcards.dal; + +import com.ibtp.kontor.tradingcards.entity.PlayerEntity; + +import java.util.Collection; +import java.util.List; + +/** + * Created by TPEETZ on 27.01.2015. + */ +interface PlayerDao { + + public PlayerEntity getById(Long id); + + public Collection findByIds(List ids); + + public Collection findByName(String name); + + public PlayerEntity addPlayer(String name); + + public PlayerEntity store(PlayerEntity entity); + + public void delete(PlayerEntity entity); +} diff --git a/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/dal/PlayerImpl.java b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/dal/PlayerImpl.java new file mode 100644 index 0000000..c3d5104 --- /dev/null +++ b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/dal/PlayerImpl.java @@ -0,0 +1,43 @@ +package com.ibtp.kontor.tradingcards.dal; + +import com.ibtp.kontor.dal.BaseImpl; +import com.ibtp.kontor.tradingcards.entity.PlayerEntity; + +import java.util.Collection; +import java.util.List; + +/** + * Created by tpeetz on 27.01.2015. + */ +public class PlayerImpl extends BaseImpl implements PlayerDao { + + @Override + public PlayerEntity getById(Long id) { + return null; + } + + @Override + public Collection findByIds(List ids) { + return null; + } + + @Override + public Collection findByName(String name) { + return null; + } + + @Override + public PlayerEntity addPlayer(String name) { + return null; + } + + @Override + public PlayerEntity store(PlayerEntity entity) { + return null; + } + + @Override + public void delete(PlayerEntity entity) { + + } +} diff --git a/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/dal/PositionDao.java b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/dal/PositionDao.java new file mode 100644 index 0000000..9970491 --- /dev/null +++ b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/dal/PositionDao.java @@ -0,0 +1,26 @@ +package com.ibtp.kontor.tradingcards.dal; + +import com.ibtp.kontor.tradingcards.entity.PositionEntity; + +import java.util.Collection; +import java.util.List; + +/** + * Created by TPEETZ on 27.01.2015. + */ +interface PositionDao { + + public PositionEntity getById(Long id); + + public Collection findByIds(List ids); + + public Collection findByName(String name); + + public Collection findAll(); + + public PositionEntity addPosition(String name); + + public PositionEntity store(PositionEntity entity); + + public void delete(PositionEntity entity); +} diff --git a/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/dal/PositionImpl.java b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/dal/PositionImpl.java new file mode 100644 index 0000000..8aad906 --- /dev/null +++ b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/dal/PositionImpl.java @@ -0,0 +1,64 @@ +package com.ibtp.kontor.tradingcards.dal; + +import com.ibtp.kontor.dal.BaseImpl; +import com.ibtp.kontor.tradingcards.entity.PositionEntity; + +import javax.persistence.EntityManager; +import javax.persistence.Query; +import java.util.Collection; +import java.util.List; + +/** + * Created by tpeetz on 27.01.2015. + */ +public class PositionImpl extends BaseImpl implements PositionDao { + + @Override + public PositionEntity getById(Long id) { + Query q = getEntityManager().createNamedQuery("Position.findById"); + q.setParameter("id", id); + return (PositionEntity)q.getSingleResult(); + } + + @Override + public Collection findByIds(List ids) { + return null; + } + + @Override + public Collection findByName(String name) { + Query q = getEntityManager().createNamedQuery("Position.findByName"); + q.setParameter("name", name); + return q.getResultList(); + } + + @Override + public Collection findAll() { + Query q = getEntityManager().createNamedQuery("Position.findAll"); + return q.getResultList(); + } + + @Override + public PositionEntity addPosition(String name) { + PositionEntity position = new PositionEntity(name); + store(position); + return position; + } + + @Override + public PositionEntity store(PositionEntity entity) { + EntityManager em = getEntityManager(); + em.getTransaction().begin(); + em.persist(entity); + em.getTransaction().commit(); + return entity; + } + + @Override + public void delete(PositionEntity entity) { + EntityManager em = getEntityManager(); + em.getTransaction().begin(); + em.remove(entity); + em.getTransaction().commit(); + } +} diff --git a/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/dal/SportCardDao.java b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/dal/SportCardDao.java new file mode 100644 index 0000000..25fb244 --- /dev/null +++ b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/dal/SportCardDao.java @@ -0,0 +1,22 @@ +package com.ibtp.kontor.tradingcards.dal; + +import com.ibtp.kontor.tradingcards.entity.SportCardEntity; + +import java.util.Collection; +import java.util.List; + +/** + * Created by TPEETZ on 27.01.2015. + */ +interface SportCardDao { + + public SportCardEntity getById(Long id); + + public Collection findByIds(List ids); + + public Collection findByName(String name); + + public SportCardEntity store(SportCardEntity entity); + + public void delete(SportCardEntity entity); +} diff --git a/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/dal/SportCardImpl.java b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/dal/SportCardImpl.java new file mode 100644 index 0000000..5939d2c --- /dev/null +++ b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/dal/SportCardImpl.java @@ -0,0 +1,38 @@ +package com.ibtp.kontor.tradingcards.dal; + +import com.ibtp.kontor.dal.BaseImpl; +import com.ibtp.kontor.tradingcards.entity.SportCardEntity; + +import java.util.Collection; +import java.util.List; + +/** + * Created by tpeetz on 27.01.2015. + */ +public class SportCardImpl extends BaseImpl implements SportCardDao { + + @Override + public SportCardEntity getById(Long id) { + return null; + } + + @Override + public Collection findByIds(List ids) { + return null; + } + + @Override + public Collection findByName(String name) { + return null; + } + + @Override + public SportCardEntity store(SportCardEntity entity) { + return null; + } + + @Override + public void delete(SportCardEntity entity) { + + } +} diff --git a/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/dal/SportDao.java b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/dal/SportDao.java new file mode 100644 index 0000000..f5ba51e --- /dev/null +++ b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/dal/SportDao.java @@ -0,0 +1,26 @@ +package com.ibtp.kontor.tradingcards.dal; + +import com.ibtp.kontor.tradingcards.entity.SportEntity; + +import java.util.Collection; +import java.util.List; + +/** + * + * @author tpeetz + */ +interface SportDao { + public SportEntity getById(Long id); + + public Collection findByIds(List ids); + + public Collection findByName(String name); + + public Collection findAll(); + + public SportEntity addSport(String name); + + public SportEntity store(SportEntity entity); + + public void delete(SportEntity entity); +} diff --git a/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/dal/SportImpl.java b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/dal/SportImpl.java new file mode 100644 index 0000000..223236d --- /dev/null +++ b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/dal/SportImpl.java @@ -0,0 +1,64 @@ +package com.ibtp.kontor.tradingcards.dal; + +import com.ibtp.kontor.dal.BaseImpl; +import com.ibtp.kontor.tradingcards.entity.SportEntity; + +import java.util.Collection; +import java.util.List; +import javax.persistence.EntityManager; +import javax.persistence.Query; + +/** + * + * @author tpeetz + */ +public class SportImpl extends BaseImpl implements SportDao { + + @Override + public SportEntity getById(Long id) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @Override + public List findByIds(List ids) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @SuppressWarnings("unchecked") + @Override + public List findByName(String name) { + Query query = getEntityManager().createNamedQuery("Sport.findByName"); + query.setParameter("name", name); + return query.getResultList(); + } + + @Override + public Collection findAll() { + Query query = getEntityManager().createNamedQuery("Sport.findAll"); + return query.getResultList(); + } + + @Override + public SportEntity addSport(String name) { + SportEntity sport = new SportEntity(name); + store(sport); + return sport; + } + + @Override + public SportEntity store(SportEntity entity) { + EntityManager em = getEntityManager(); + em.getTransaction().begin(); + em.persist(entity); + em.getTransaction().commit(); + return entity; + } + + @Override + public void delete(SportEntity entity) { + EntityManager em = getEntityManager(); + em.getTransaction().begin(); + em.remove(entity); + em.getTransaction().commit(); + } +} diff --git a/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/dal/TeamDao.java b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/dal/TeamDao.java new file mode 100644 index 0000000..c2f9eff --- /dev/null +++ b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/dal/TeamDao.java @@ -0,0 +1,26 @@ +package com.ibtp.kontor.tradingcards.dal; + +import com.ibtp.kontor.tradingcards.entity.SportEntity; +import com.ibtp.kontor.tradingcards.entity.TeamEntity; + +import java.util.Collection; +import java.util.List; + +/** + * Created by TPEETZ on 19.01.2015. + */ +interface TeamDao { + public TeamEntity getById(Long id); + + public Collection findByIds(List ids); + + public Collection findByName(String name); + + public Collection findAll(); + + public TeamEntity addTeam(String name, SportEntity sport); + + public TeamEntity store(TeamEntity entity); + + public void delete(TeamEntity entity); +} diff --git a/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/dal/TeamImpl.java b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/dal/TeamImpl.java new file mode 100644 index 0000000..7fb8244 --- /dev/null +++ b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/dal/TeamImpl.java @@ -0,0 +1,66 @@ +package com.ibtp.kontor.tradingcards.dal; + +import com.ibtp.kontor.dal.BaseImpl; +import com.ibtp.kontor.tradingcards.entity.SportEntity; +import com.ibtp.kontor.tradingcards.entity.TeamEntity; + +import javax.persistence.EntityManager; +import javax.persistence.Query; +import java.util.Collection; +import java.util.List; + +/** + * Created by TPEETZ on 19.01.2015. + */ +public class TeamImpl extends BaseImpl implements TeamDao { + + @Override + public TeamEntity getById(Long id) { + Query query = getEntityManager().createNamedQuery("Team.findById"); + query.setParameter("id", id); + return (TeamEntity)query.getSingleResult(); + } + + @Override + public Collection findByIds(List ids) { + return null; + } + + @Override + public Collection findByName(String name) { + Query query = getEntityManager().createNamedQuery("Team.findByName"); + query.setParameter("name", name); + return query.getResultList(); + } + + @Override + public Collection findAll() { + Query query = getEntityManager().createNamedQuery("Team.findAll"); + return query.getResultList(); + } + + @Override + public TeamEntity addTeam(String name, SportEntity sport) { + TeamEntity team = new TeamEntity(name); + team.setSport(sport); + store(team); + return team; + } + + @Override + public TeamEntity store(TeamEntity entity) { + EntityManager em = getEntityManager(); + em.getTransaction().begin(); + em.persist(entity); + em.getTransaction().commit(); + return entity; + } + + @Override + public void delete(TeamEntity entity) { + EntityManager em = getEntityManager(); + em.getTransaction().begin(); + em.remove(entity); + em.getTransaction().commit(); + } +} diff --git a/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/entity/BaseSetEntity.java b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/entity/BaseSetEntity.java new file mode 100644 index 0000000..3111e98 --- /dev/null +++ b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/entity/BaseSetEntity.java @@ -0,0 +1,67 @@ +package com.ibtp.kontor.tradingcards.entity; + +import java.util.ArrayList; +import java.util.Collection; + +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.ManyToOne; +import javax.persistence.OneToMany; +import javax.persistence.Table; + +@Entity +@Table(name="BASESET") +public class BaseSetEntity { + private Long id; + private String name; + private ManufacturerEntity manufacturer; + private Collection parallelSets = new ArrayList(); + private Collection inserts = new ArrayList(); + + @Id + @GeneratedValue(strategy=GenerationType.AUTO) + public Long getId() { return id; } + + @SuppressWarnings("unused") + private void setId(Long id) { this.id = id; } + + @Column + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @ManyToOne + public ManufacturerEntity getManufacturer() { + return manufacturer; + } + + public void setManufacturer(ManufacturerEntity manufacturer) { + this.manufacturer = manufacturer; + } + + @OneToMany(mappedBy="baseSet", cascade=CascadeType.REMOVE) + public Collection getParallelSets() { + return parallelSets; + } + + public void setParallelSets(Collection parallelSets) { + this.parallelSets = parallelSets; + } + + @OneToMany(mappedBy="baseSet", cascade=CascadeType.REMOVE) + public Collection getInserts() { + return inserts; + } + + public void setInserts(Collection inserts) { + this.inserts = inserts; + } +} diff --git a/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/entity/InsertEntity.java b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/entity/InsertEntity.java new file mode 100644 index 0000000..ce59037 --- /dev/null +++ b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/entity/InsertEntity.java @@ -0,0 +1,74 @@ +package com.ibtp.kontor.tradingcards.entity; + +import java.util.ArrayList; +import java.util.Collection; +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.ManyToOne; +import javax.persistence.NamedQueries; +import javax.persistence.NamedQuery; +import javax.persistence.OneToMany; +import javax.persistence.Table; + +@NamedQueries({ + @NamedQuery(name="InsertSet.findAll", query="SELECT i from InsertEntity as i"), + @NamedQuery(name="InsertSet.findById", query="SELECT i from InsertEntity as i WHERE i.id = :id"), + @NamedQuery(name="InsertSet.findByName", query="SELECT i from InsertEntity as i WHERE i.name = :name") +}) + +@Entity +@Table(name="INSERTSET") +public class InsertEntity { + private Long id; + private String name; + private ManufacturerEntity manufacturer; + private BaseSetEntity baseSet; + private Collection sportCard = new ArrayList(); + + @Id + @GeneratedValue(strategy=GenerationType.AUTO) + public Long getId() { return id; } + + @SuppressWarnings("unused") + private void setId(Long id) { this.id = id; } + + @Column + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @ManyToOne + public ManufacturerEntity getManufacturer() { + return manufacturer; + } + + public void setManufacturer(ManufacturerEntity manufacturer) { + this.manufacturer = manufacturer; + } + + @ManyToOne + public BaseSetEntity getBaseSet() { + return baseSet; + } + + public void setBaseSet(BaseSetEntity baseSet) { + this.baseSet = baseSet; + } + + @OneToMany(mappedBy="insert", cascade=CascadeType.REMOVE) + public Collection getSportCard() { + return sportCard; + } + + public void setSportCard(Collection sportCard) { + this.sportCard = sportCard; + } +} diff --git a/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/entity/ManufacturerEntity.java b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/entity/ManufacturerEntity.java new file mode 100644 index 0000000..f83da2a --- /dev/null +++ b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/entity/ManufacturerEntity.java @@ -0,0 +1,78 @@ +package com.ibtp.kontor.tradingcards.entity; + +import java.util.ArrayList; +import java.util.Collection; + +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.NamedQueries; +import javax.persistence.NamedQuery; +import javax.persistence.OneToMany; +import javax.persistence.Table; + +@NamedQueries({ + @NamedQuery(name="Manufacturer.findAll", query="SELECT m from ManufacturerEntity as m"), + @NamedQuery(name="Manufacturer.findByName", query="SELECT m from ManufacturerEntity as m WHERE m.name = :name") +}) + +@Entity +@Table(name="MANUFACTURER") +public class ManufacturerEntity { + + private Long id; + private String name; + private Collection baseSets = new ArrayList(); + private Collection parallelSets = new ArrayList(); + private Collection inserts = new ArrayList(); + + public ManufacturerEntity(String name) { + setName(name); + } + + @Id + @GeneratedValue(strategy=GenerationType.AUTO) + public Long getId() { return id; } + + @SuppressWarnings("unused") + private void setId(Long id) { this.id = id; } + + @Column + public String getName() { + return name; + } + + void setName(String name) { + this.name = name; + } + + @OneToMany(mappedBy="manufacturer", cascade=CascadeType.REMOVE) + public Collection getBaseSets() { + return baseSets; + } + + public void setBaseSets(Collection baseSets) { + this.baseSets = baseSets; + } + + @OneToMany(mappedBy="manufacturer", cascade=CascadeType.REMOVE) + public Collection getParallelSets() { + return parallelSets; + } + + public void setParallelSets(Collection parallelSets) { + this.parallelSets = parallelSets; + } + + @OneToMany(mappedBy="manufacturer", cascade=CascadeType.REMOVE) + public Collection getInserts() { + return inserts; + } + + public void setInserts(Collection inserts) { + this.inserts = inserts; + } +} diff --git a/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/entity/ParallelSetEntity.java b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/entity/ParallelSetEntity.java new file mode 100644 index 0000000..0ce0c69 --- /dev/null +++ b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/entity/ParallelSetEntity.java @@ -0,0 +1,53 @@ +package com.ibtp.kontor.tradingcards.entity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.ManyToOne; +import javax.persistence.Table; + +@Entity +@Table(name="PARALLELSET") +public class ParallelSetEntity { + private Long id; + private String name; + private ManufacturerEntity manufacturer; + + private BaseSetEntity baseSet; + + @Id + @GeneratedValue(strategy=GenerationType.AUTO) + public Long getId() { return id; } + + @SuppressWarnings("unused") + private void setId(Long id) { this.id = id; } + + @Column + public String getName() { + return name; + } + + @ManyToOne + public ManufacturerEntity getManufacturer() { + return manufacturer; + } + + public void setManufacturer(ManufacturerEntity manufacturer) { + this.manufacturer = manufacturer; + } + + public void setName(String name) { + this.name = name; + } + + @ManyToOne + public BaseSetEntity getBaseSet() { + return baseSet; + } + + public void setBaseSet(BaseSetEntity baseSet) { + this.baseSet = baseSet; + } +} diff --git a/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/entity/PlayerEntity.java b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/entity/PlayerEntity.java new file mode 100644 index 0000000..7c19d70 --- /dev/null +++ b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/entity/PlayerEntity.java @@ -0,0 +1,46 @@ +package com.ibtp.kontor.tradingcards.entity; + +import java.util.ArrayList; +import java.util.Collection; + +import javax.persistence.CascadeType; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.ManyToOne; +import javax.persistence.OneToMany; +import javax.persistence.Table; + +@Entity +@Table(name="PLAYER") +public class PlayerEntity { + private Long id; + private TeamEntity team; + private Collection cards = new ArrayList(); + + @Id + @GeneratedValue(strategy=GenerationType.AUTO) + public Long getId() { return id; } + + @SuppressWarnings("unused") + private void setId(Long id) { this.id = id; } + + @ManyToOne + public TeamEntity getTeam() { + return team; + } + + public void setTeam(TeamEntity team) { + this.team = team; + } + + @OneToMany(mappedBy="player", cascade=CascadeType.REMOVE) + public Collection getCards() { + return cards; + } + + public void setCards(Collection cards) { + this.cards = cards; + } +} diff --git a/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/entity/PositionEntity.java b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/entity/PositionEntity.java new file mode 100644 index 0000000..3e575e0 --- /dev/null +++ b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/entity/PositionEntity.java @@ -0,0 +1,56 @@ +package com.ibtp.kontor.tradingcards.entity; + +import javax.persistence.*; + +@NamedQueries({ + @NamedQuery(name="Position.findAll", query="SELECT m from PositionEntity as m"), + @NamedQuery(name="Position.findByName", query="SELECT m from PositionEntity as m WHERE m.name = :name") +}) + +@Entity +@Table(name="POSITION") +public class PositionEntity { + + private Long id; + private String name; + private String shortName; + private SportEntity sport; + + public PositionEntity() {} + + public PositionEntity(String name) { setName(name); } + + @Id + @GeneratedValue(strategy=GenerationType.AUTO) + public Long getId() { return id; } + + @SuppressWarnings("unused") + private void setId(Long id) { this.id = id; } + + @Column + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @Column + public String getShortName() { + return shortName; + } + + public void setShortName(String shortName) { + this.shortName = shortName; + } + + @ManyToOne + public SportEntity getSport() { + return sport; + } + + public void setSport(SportEntity sport) { + this.sport = sport; + } +} diff --git a/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/entity/SportCardEntity.java b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/entity/SportCardEntity.java new file mode 100644 index 0000000..f71f722 --- /dev/null +++ b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/entity/SportCardEntity.java @@ -0,0 +1,68 @@ +package com.ibtp.kontor.tradingcards.entity; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.ManyToOne; +import javax.persistence.NamedQueries; +import javax.persistence.NamedQuery; +import javax.persistence.Table; + +@NamedQueries({ + @NamedQuery(name="SportCard.findAll", query="SELECT s from SportCardEntity as s") +}) + +@Entity +@Table(name = "SPORTCARD") +public class SportCardEntity { + private Long id; + private PlayerEntity player; + private BaseSetEntity baseSet; + private ParallelSetEntity parallelSet; + private InsertEntity insert; + + @Id + @GeneratedValue(strategy=GenerationType.AUTO) + public Long getId() { return id; } + + @SuppressWarnings("unused") + private void setId(Long id) { this.id = id; } + + @ManyToOne + public PlayerEntity getPlayer() { + return player; + } + + public void setPlayer(PlayerEntity player) { + this.player = player; + } + + @ManyToOne + public BaseSetEntity getBaseSet() { + return baseSet; + } + + public void setBaseSet(BaseSetEntity baseSet) { + this.baseSet = baseSet; + } + + @ManyToOne + public ParallelSetEntity getParallelSet() { + return parallelSet; + } + + public void setParallelSet(ParallelSetEntity parallelSet) { + this.parallelSet = parallelSet; + } + + @ManyToOne + public InsertEntity getInsert() { + return insert; + } + + public void setInsert(InsertEntity insert) { + this.insert = insert; + } + +} diff --git a/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/entity/SportEntity.java b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/entity/SportEntity.java new file mode 100644 index 0000000..8e2258e --- /dev/null +++ b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/entity/SportEntity.java @@ -0,0 +1,75 @@ +package com.ibtp.kontor.tradingcards.entity; + +import java.util.ArrayList; +import java.util.Collection; + +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.NamedQueries; +import javax.persistence.NamedQuery; +import javax.persistence.OneToMany; +import javax.persistence.Table; + +@NamedQueries({ + @NamedQuery(name="Sport.findAll", query="SELECT s from SportEntity as s"), + @NamedQuery(name="Sport.findByName", query="SELECT s from SportEntity as s WHERE s.name = :name") +}) + +@Entity +@Table(name="SPORT") +public class SportEntity { + + private Long id; + private String name; + private Collection teams = new ArrayList(); + private Collection positions = new ArrayList(); + + public SportEntity() {} + + public SportEntity(String name) { + setName(name); + } + + @Id + @GeneratedValue(strategy=GenerationType.AUTO) + Long getId() { return id; } + + @SuppressWarnings("unused") + private void setId(Long id) { this.id = id; } + + @Column + String getName() { + return name; + } + + void setName(String name) { + this.name = name; + } + + @OneToMany(mappedBy="sport", cascade=CascadeType.REMOVE) + public Collection getTeams() { + return teams; + } + + public void setTeams(Collection teams) { + this.teams = teams; + } + + @OneToMany(mappedBy="sport", cascade=CascadeType.REMOVE) + public Collection getPositions() { + return positions; + } + + public void setPositions(Collection positions) { + this.positions = positions; + } + + @Override + public String toString() { + return "Sport[" + "id=" + getId() + ",name=" + getName() + "]"; + } +} diff --git a/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/entity/TeamEntity.java b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/entity/TeamEntity.java new file mode 100644 index 0000000..8dbcb77 --- /dev/null +++ b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/entity/TeamEntity.java @@ -0,0 +1,48 @@ +package com.ibtp.kontor.tradingcards.entity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.ManyToOne; +import javax.persistence.NamedQueries; +import javax.persistence.NamedQuery; +import javax.persistence.Table; + +@NamedQueries({ + @NamedQuery(name="Team.findAll", query="SELECT t from TeamEntity as t"), + @NamedQuery(name="Team.findByName", query="SELECT t from TeamEntity as t WHERE t.name = :name") +}) + +@Entity +@Table(name="TEAM") +public class TeamEntity { + + private Long id; + private String name; + private SportEntity sport; + + public TeamEntity() {} + + public TeamEntity(String name) { + setName(name); + } + + @Id + @GeneratedValue(strategy=GenerationType.AUTO) + public Long getId() { return id; } + + @SuppressWarnings("unused") + private void setId(Long id) { this.id = id; } + + @Column + public String getName() { return name; } + + void setName(String name) { this.name = name; } + + @ManyToOne + public SportEntity getSport() { return sport; } + + public void setSport(SportEntity sport) { this.sport = sport; } +} diff --git a/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/view/TradingCardsMenu.java b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/view/TradingCardsMenu.java new file mode 100644 index 0000000..f124056 --- /dev/null +++ b/java-ee/KontorApp/src/main/java/com/ibtp/kontor/tradingcards/view/TradingCardsMenu.java @@ -0,0 +1,13 @@ +package com.ibtp.kontor.tradingcards.view; + +import javax.swing.*; + +/** + * Created by TPEETZ on 13.02.2015. + */ +public class TradingCardsMenu extends JMenu { + + public TradingCardsMenu() { + super("TradingCards"); + } +} diff --git a/java-ee/KontorApp/src/main/resources/META-INF/persistence.xml b/java-ee/KontorApp/src/main/resources/META-INF/persistence.xml new file mode 100644 index 0000000..35d671b --- /dev/null +++ b/java-ee/KontorApp/src/main/resources/META-INF/persistence.xml @@ -0,0 +1,39 @@ + + + org.hibernate.jpa.HibernatePersistenceProvider + com.ibtp.kontor.comics.entity.ArtistEntity + com.ibtp.kontor.comics.entity.ComicEntity + com.ibtp.kontor.comics.entity.IssueEntity + com.ibtp.kontor.comics.entity.StoryArcEntity + com.ibtp.kontor.comics.entity.VolumeEntity + com.ibtp.kontor.comics.entity.PublisherEntity + com.ibtp.kontor.library.entity.AuthorEntity + com.ibtp.kontor.library.entity.ArticleEntity + com.ibtp.kontor.library.entity.BookEntity + com.ibtp.kontor.library.entity.FileEntity + com.ibtp.kontor.library.entity.TitleEntity + com.ibtp.kontor.tradingcards.entity.SportEntity + com.ibtp.kontor.tradingcards.entity.TeamEntity + com.ibtp.kontor.tradingcards.entity.PositionEntity + com.ibtp.kontor.tradingcards.entity.PlayerEntity + com.ibtp.kontor.tradingcards.entity.ManufacturerEntity + com.ibtp.kontor.tradingcards.entity.BaseSetEntity + com.ibtp.kontor.tradingcards.entity.InsertEntity + com.ibtp.kontor.tradingcards.entity.ParallelSetEntity + com.ibtp.kontor.tradingcards.entity.SportCardEntity + + + + + + + + + + + + + diff --git a/java-ee/KontorApp/src/main/resources/logback.xml b/java-ee/KontorApp/src/main/resources/logback.xml new file mode 100644 index 0000000..e8cff02 --- /dev/null +++ b/java-ee/KontorApp/src/main/resources/logback.xml @@ -0,0 +1,40 @@ + + + + + + %d{yyyy-MM-dd_HH:mm:ss.SSS} %-5level %logger{36} - %msg%n + + + + + + c:/kontor.log + + %d{yyyy-MM-dd_HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + + + + c:/kontor.%i.log.zip + 1 + 10 + + + + 2MB + + + + + + + + + + + + + diff --git a/java-ee/KontorApp/src/test/java/com/ibtp/kontor/comics/CollectionTest.java b/java-ee/KontorApp/src/test/java/com/ibtp/kontor/comics/CollectionTest.java new file mode 100644 index 0000000..146c854 --- /dev/null +++ b/java-ee/KontorApp/src/test/java/com/ibtp/kontor/comics/CollectionTest.java @@ -0,0 +1,41 @@ +package com.ibtp.kontor.comics; + +import com.ibtp.kontor.comics.dal.PublisherImpl; +import com.ibtp.kontor.comics.entity.PublisherEntity; +import com.ibtp.kontor.dal.DatabaseManager; +import com.ibtp.kontor.util.LocalTestDatabase; +import org.junit.*; + +import java.util.Collection; +import java.util.Iterator; + +/** + * Created by TPEETZ on 27.01.2015. + */ +public class CollectionTest { + + @Before + public void setUp() { + DatabaseManager.setDatabase(new LocalTestDatabase()); + } + + @After + public void cleanup() { + PublisherImpl publisherImpl = new PublisherImpl(); + Collection publisherEntities = publisherImpl.findAll(); + for (Iterator iterator = publisherEntities.iterator(); iterator.hasNext(); ) { + PublisherEntity next = iterator.next(); + publisherImpl.delete(next); + } + } + + @Test + public void testAddPublishers() { + String publisherName = "Bongo Comics"; + PublisherImpl publisherImpl = new PublisherImpl(); + publisherImpl.addPublisher("Bongo Comics"); + publisherImpl.addPublisher("Marvel"); + Collection publisherList = publisherImpl.findAll(); + Assert.assertEquals(2, publisherList.size()); + } +} diff --git a/java-ee/KontorApp/src/test/java/com/ibtp/kontor/comics/dal/ArtistImplTest.java b/java-ee/KontorApp/src/test/java/com/ibtp/kontor/comics/dal/ArtistImplTest.java new file mode 100644 index 0000000..4095fba --- /dev/null +++ b/java-ee/KontorApp/src/test/java/com/ibtp/kontor/comics/dal/ArtistImplTest.java @@ -0,0 +1,50 @@ +package com.ibtp.kontor.comics.dal; + +import com.ibtp.kontor.comics.entity.ArtistEntity; +import com.ibtp.kontor.dal.*; +import com.ibtp.kontor.util.LocalTestDatabase; +import org.junit.*; + +import java.util.Collection; +import java.util.Iterator; + +public class ArtistImplTest { + + @Before + public void setUp() { + DatabaseManager.setDatabase(new LocalTestDatabase()); + } + + @Test + public void testArtistAddAndDelete() { + String artistName = "testArtistAddAndDelete"; + ArtistImpl artistImpl = new ArtistImpl(); + artistImpl.addArtist(artistName); + Collection resultList = artistImpl.findByName(artistName); + Assert.assertNotNull(resultList); + Assert.assertTrue(resultList.size() > 0); + ArtistEntity artist = (ArtistEntity)(resultList.toArray()[0]); + artistImpl.delete(artist); + resultList = artistImpl.findByName(artistName); + Assert.assertNotNull(resultList); + Assert.assertEquals(0, resultList.size()); + } + + @Test + public void testArtistFindAll() { + ArtistImpl artistImpl = new ArtistImpl(); + Collection artistList = artistImpl.findAll(); + Assert.assertNotNull(artistList); + Assert.assertEquals(0, artistList.size()); + artistImpl.addArtist("testArtistFindAll1"); + artistImpl.addArtist("testArtistFindAll2"); + artistImpl.addArtist("testArtistFindAll3"); + artistList = artistImpl.findAll(); + Assert.assertNotNull(artistList); + Assert.assertEquals(3, artistList.size()); + for (Iterator iterator = artistList.iterator(); iterator.hasNext(); ) { + ArtistEntity next = iterator.next(); + artistImpl.delete(next); + } + } +} diff --git a/java-ee/KontorApp/src/test/java/com/ibtp/kontor/comics/dal/ComicImplTest.java b/java-ee/KontorApp/src/test/java/com/ibtp/kontor/comics/dal/ComicImplTest.java new file mode 100644 index 0000000..eb494c9 --- /dev/null +++ b/java-ee/KontorApp/src/test/java/com/ibtp/kontor/comics/dal/ComicImplTest.java @@ -0,0 +1,54 @@ +package com.ibtp.kontor.comics.dal; + +import com.ibtp.kontor.comics.entity.ComicEntity; +import com.ibtp.kontor.dal.DatabaseManager; +import com.ibtp.kontor.util.LocalTestDatabase; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +import java.util.Collection; +import java.util.Iterator; + +/** + * Created by TPEETZ on 28.01.2015. + */ +public class ComicImplTest { + + @Before + public void setUp() { + DatabaseManager.setDatabase(new LocalTestDatabase()); + } + + @Test + public void testComicAddAndDelete() { + String comicTitle = "Comic1"; + ComicImpl comicImpl = new ComicImpl(); + comicImpl.addComic(comicTitle); + Collection comicList = comicImpl.findByTitle(comicTitle); + Assert.assertNotNull(comicList); + Assert.assertEquals(1, comicList.size()); + comicImpl.delete((ComicEntity) comicList.toArray()[0]); + comicList = comicImpl.findByTitle(comicTitle); + Assert.assertNotNull(comicList); + Assert.assertEquals(0, comicList.size()); + } + + @Test + public void testComicFindAll() { + ComicImpl comicImpl = new ComicImpl(); + comicImpl.addComic("Comic1"); + comicImpl.addComic("Comic2"); + comicImpl.addComic("Comic3"); + Collection comicList = comicImpl.findAll(); + Assert.assertNotNull(comicList); + Assert.assertEquals(3, comicList.size()); + for (Iterator iterator = comicList.iterator(); iterator.hasNext(); ) { + ComicEntity next = iterator.next(); + comicImpl.delete(next); + } + comicList = comicImpl.findAll(); + Assert.assertNotNull(comicList); + Assert.assertEquals(0, comicList.size()); + } +} diff --git a/java-ee/KontorApp/src/test/java/com/ibtp/kontor/comics/dal/IssueImplTest.java b/java-ee/KontorApp/src/test/java/com/ibtp/kontor/comics/dal/IssueImplTest.java new file mode 100644 index 0000000..4cf7cdc --- /dev/null +++ b/java-ee/KontorApp/src/test/java/com/ibtp/kontor/comics/dal/IssueImplTest.java @@ -0,0 +1,62 @@ +package com.ibtp.kontor.comics.dal; + +import com.ibtp.kontor.comics.entity.IssueEntity; +import com.ibtp.kontor.dal.DatabaseManager; +import com.ibtp.kontor.util.LocalTestDatabase; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +import java.util.Collection; +import java.util.Iterator; + +/** + * Created by TPEETZ on 28.01.2015. + */ +public class IssueImplTest { + + @Before + public void setUp() { + DatabaseManager.setDatabase(new LocalTestDatabase()); + } + + @Test + public void testIssueAddAndDelete() { + String issueNumber = "42"; + IssueImpl issueImpl = new IssueImpl(); + IssueEntity issue = new IssueEntity(); + issue.setNumber(issueNumber); + issueImpl.store(issue); + Collection issueList = issueImpl.findByNumber(issueNumber); + Assert.assertNotNull(issueList); + Assert.assertEquals(1, issueList.size()); + issueImpl.delete(issue); + issueList = issueImpl.findByNumber(issueNumber); + Assert.assertNotNull(issueList); + Assert.assertEquals(0, issueList.size()); + } + + @Test + public void testIssueFindAll() { + IssueImpl issueImpl = new IssueImpl(); + IssueEntity issue1 = new IssueEntity(); + issue1.setNumber("issue1"); + IssueEntity issue2 = new IssueEntity(); + issue1.setNumber("issue2"); + IssueEntity issue3 = new IssueEntity(); + issue1.setNumber("issue3"); + issueImpl.store(issue1); + issueImpl.store(issue2); + issueImpl.store(issue3); + Collection issueList = issueImpl.findAll(); + Assert.assertNotNull(issueList); + Assert.assertEquals(3, issueList.size()); + for (Iterator iterator = issueList.iterator(); iterator.hasNext(); ) { + IssueEntity next = iterator.next(); + issueImpl.delete(next); + } + issueList = issueImpl.findAll(); + Assert.assertNotNull(issueList); + Assert.assertEquals(0, issueList.size()); + } +} diff --git a/java-ee/KontorApp/src/test/java/com/ibtp/kontor/comics/dal/PublisherImplTest.java b/java-ee/KontorApp/src/test/java/com/ibtp/kontor/comics/dal/PublisherImplTest.java new file mode 100644 index 0000000..9f459cc --- /dev/null +++ b/java-ee/KontorApp/src/test/java/com/ibtp/kontor/comics/dal/PublisherImplTest.java @@ -0,0 +1,50 @@ +package com.ibtp.kontor.comics.dal; + +import com.ibtp.kontor.comics.entity.PublisherEntity; +import com.ibtp.kontor.dal.DatabaseManager; +import com.ibtp.kontor.util.LocalTestDatabase; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +import java.util.Collection; +import java.util.Iterator; + +/** + * Created by TPEETZ on 20.01.2015. + */ +public class PublisherImplTest { + + @Before + public void setUp() { + DatabaseManager.setDatabase(new LocalTestDatabase()); + } + + @Test + public void testPublisherAddAndDelete() { + String publisherName = "testPublisherAddAndDelete"; + PublisherImpl publisherImpl = new PublisherImpl(); + PublisherEntity publisher = publisherImpl.addPublisher(publisherName); + Collection publisherList = publisherImpl.findByName(publisherName); + Assert.assertEquals(1, publisherList.size()); + publisherImpl.delete(publisher); + publisherList = publisherImpl.findByName(publisherName); + Assert.assertEquals(0, publisherList.size()); + } + + @Test + public void testPublisherFindAll() { + PublisherImpl publisherImpl = new PublisherImpl(); + publisherImpl.addPublisher("testDeletePublisher1"); + publisherImpl.addPublisher("testDeletePublisher2"); + publisherImpl.addPublisher("testDeletePublisher3"); + Collection publisherList = publisherImpl.findAll(); + Assert.assertEquals(3, publisherList.size()); + for (Iterator iterator = publisherList.iterator(); iterator.hasNext(); ) { + PublisherEntity next = iterator.next(); + publisherImpl.delete(next); + } + publisherList = publisherImpl.findAll(); + Assert.assertEquals(0, publisherList.size()); + } +} diff --git a/java-ee/KontorApp/src/test/java/com/ibtp/kontor/comics/dal/StoryArcImplTest.java b/java-ee/KontorApp/src/test/java/com/ibtp/kontor/comics/dal/StoryArcImplTest.java new file mode 100644 index 0000000..8df7b94 --- /dev/null +++ b/java-ee/KontorApp/src/test/java/com/ibtp/kontor/comics/dal/StoryArcImplTest.java @@ -0,0 +1,55 @@ +package com.ibtp.kontor.comics.dal; + +import com.ibtp.kontor.comics.entity.StoryArcEntity; +import com.ibtp.kontor.dal.DatabaseManager; +import com.ibtp.kontor.util.LocalTestDatabase; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +import java.util.Collection; + +/** + * Created by TPEETZ on 28.01.2015. + */ +public class StoryArcImplTest { + + @Before + public void setUp() { + DatabaseManager.setDatabase(new LocalTestDatabase()); + } + + @Test + public void testStoryArcAddAndDelete() { + String storyArcTtitle = "testStoryArcAddAndDelete"; + StoryArcImpl storyArcImpl = new StoryArcImpl(); + StoryArcEntity storyArc = new StoryArcEntity(); + storyArc.setTitle(storyArcTtitle); + storyArcImpl.store(storyArc); + Collection storyArcEntityCollection = storyArcImpl.findByTitle(storyArcTtitle); + Assert.assertNotNull(storyArcEntityCollection); + Assert.assertEquals(1, storyArcEntityCollection.size()); + storyArcImpl.delete(storyArc); + storyArcEntityCollection = storyArcImpl.findByTitle(storyArcTtitle); + Assert.assertNotNull(storyArcEntityCollection); + Assert.assertEquals(0, storyArcEntityCollection.size()); + } + + @Test + public void testStoryArcFindAll() { + StoryArcImpl storyArcImpl = new StoryArcImpl(); + StoryArcEntity storyArc; + storyArc = new StoryArcEntity(); + storyArc.setTitle("testStoryArcFindAll1"); + storyArcImpl.store(storyArc); + storyArc = new StoryArcEntity(); + storyArc.setTitle("testStoryArcFindAll2"); + storyArcImpl.store(storyArc); + storyArc = new StoryArcEntity(); + storyArc.setTitle("testStoryArcFindAll3"); + storyArcImpl.store(storyArc); + Collection storyArcEntityCollection = storyArcImpl.findAll(); + Assert.assertNotNull(storyArcEntityCollection); + Assert.assertEquals(3, storyArcEntityCollection.size()); + } +} diff --git a/java-ee/KontorApp/src/test/java/com/ibtp/kontor/comics/dal/VolumeImplTest.java b/java-ee/KontorApp/src/test/java/com/ibtp/kontor/comics/dal/VolumeImplTest.java new file mode 100644 index 0000000..e5c5b3a --- /dev/null +++ b/java-ee/KontorApp/src/test/java/com/ibtp/kontor/comics/dal/VolumeImplTest.java @@ -0,0 +1,67 @@ +package com.ibtp.kontor.comics.dal; + +import com.ibtp.kontor.comics.entity.VolumeEntity; +import com.ibtp.kontor.dal.DatabaseManager; +import com.ibtp.kontor.util.LocalTestDatabase; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +import java.util.Collection; +import java.util.Iterator; + +/** + * Created by TPEETZ on 28.01.2015. + */ +public class VolumeImplTest { + + @Before + public void setUp() { + DatabaseManager.setDatabase(new LocalTestDatabase()); + } + + @Test + public void testVolumeAddAndDelete() { + String volumeTitle = "testVolumeAddAndDelete"; + VolumeImpl volumeImpl = new VolumeImpl(); + VolumeEntity volume = new VolumeEntity(); + volume.setTitle(volumeTitle); + VolumeEntity volumeEntity = volumeImpl.store(volume); + Assert.assertNotNull(volumeEntity); + Assert.assertEquals(volumeTitle, volumeEntity.getTitle()); + Collection volumeList = volumeImpl.findByTitle(volumeTitle); + Assert.assertNotNull(volumeList); + Assert.assertEquals(1, volumeList.size()); + VolumeEntity result = (VolumeEntity)volumeList.toArray()[0]; + Assert.assertEquals(volume, result); + volumeImpl.delete(result); + volumeList = volumeImpl.findByTitle(volumeTitle); + Assert.assertEquals(0, volumeList.size()); + } + + @Test + public void testVolumeFindAll() { + VolumeImpl volumeImpl = new VolumeImpl(); + VolumeEntity volume; + volume = new VolumeEntity(); + volume.setTitle("testVolumeFindAll1"); + volumeImpl.store(volume); + volume = new VolumeEntity(); + volume.setTitle("testVolumeFindAll2"); + volumeImpl.store(volume); + volume = new VolumeEntity(); + volume.setTitle("testVolumeFindAll3"); + volumeImpl.store(volume); + Collection volumeList = volumeImpl.findAll(); + Assert.assertNotNull(volumeList); + Assert.assertEquals(3, volumeList.size()); + for (Iterator iterator = volumeList.iterator(); iterator.hasNext(); ) { + VolumeEntity next = iterator.next(); + volumeImpl.delete(next); + } + volumeList = volumeImpl.findAll(); + Assert.assertNotNull(volumeList); + Assert.assertEquals(0, volumeList.size()); + } + +} diff --git a/java-ee/KontorApp/src/test/java/com/ibtp/kontor/dal/DataAccessLayerTest.java b/java-ee/KontorApp/src/test/java/com/ibtp/kontor/dal/DataAccessLayerTest.java new file mode 100644 index 0000000..6351468 --- /dev/null +++ b/java-ee/KontorApp/src/test/java/com/ibtp/kontor/dal/DataAccessLayerTest.java @@ -0,0 +1,62 @@ +package com.ibtp.kontor.dal; + +import org.junit.Assert; +import org.junit.Test; + +import java.lang.reflect.Method; + +/** + * Created by TPEETZ on 10.02.2015. + */ +public class DataAccessLayerTest { + + public void findTests(String packageName, String entityName) { + String testClassName = packageName + entityName + "ImplTest"; + Class testClass; + try { + testClass = Class.forName(testClassName); + Method addAndDelete = testClass.getMethod("test" + entityName + "AddAndDelete"); + Method findAll = testClass.getMethod("test" + entityName + "FindAll"); + } catch (ClassNotFoundException e) { + Assert.fail("Class " + testClassName + " missing"); + } catch (NoSuchMethodException e) { + Assert.fail("Test method for class " + testClassName + " missing"); + } + } + + @Test + public void testFindComicTests() { + /* + * Find all Tests + */ + String[] testClasses = new String[]{"Artist", "Comic", "Issue", "Publisher", "StoryArc", "Volume"}; + for (int i = 0; i < testClasses.length; i++) { + String testEntity = testClasses[i]; + findTests("com.ibtp.kontor.comics.dal.", testEntity); + } + } + + @Test + public void testFindLibraryTests() { + /* + * Find all Tests + */ + String[] testClasses = new String[]{"Article", "Author", "Book", "File", "Title"}; + for (int i = 0; i < testClasses.length; i++) { + String testEntity = testClasses[i]; + findTests("com.ibtp.kontor.library.dal.", testEntity); + } + } + + @Test + public void testFindTradingCardsTests() { + /* + * Find all Tests + */ + String[] testClasses = new String[]{"BaseSet", "Insert", "Manufacturer", "ParallelSet", "Player", "Position", "SportCard", "Sport", "Team"}; + for (int i = 0; i < testClasses.length; i++) { + String testEntity = testClasses[i]; + findTests("com.ibtp.kontor.tradingcards.dal." , testEntity); + } + } +} diff --git a/java-ee/KontorApp/src/test/java/com/ibtp/kontor/library/BookshelfTest.java b/java-ee/KontorApp/src/test/java/com/ibtp/kontor/library/BookshelfTest.java new file mode 100644 index 0000000..57f0a84 --- /dev/null +++ b/java-ee/KontorApp/src/test/java/com/ibtp/kontor/library/BookshelfTest.java @@ -0,0 +1,22 @@ +package com.ibtp.kontor.library; + +import com.ibtp.kontor.dal.DatabaseManager; +import com.ibtp.kontor.util.LocalTestDatabase; +import org.junit.Before; +import org.junit.Test; + +/** + * Created by TPEETZ on 27.01.2015. + */ +public class BookshelfTest { + + @Before + public void setUp() { + DatabaseManager.setDatabase(new LocalTestDatabase()); + } + + @Test + public void testAddAuthors() { + + } +} diff --git a/java-ee/KontorApp/src/test/java/com/ibtp/kontor/library/dal/ArticleImplTest.java b/java-ee/KontorApp/src/test/java/com/ibtp/kontor/library/dal/ArticleImplTest.java new file mode 100644 index 0000000..5fa268b --- /dev/null +++ b/java-ee/KontorApp/src/test/java/com/ibtp/kontor/library/dal/ArticleImplTest.java @@ -0,0 +1,41 @@ +package com.ibtp.kontor.library.dal; + +import com.ibtp.kontor.dal.DatabaseManager; +import com.ibtp.kontor.util.LocalTestDatabase; +import com.ibtp.kontor.library.entity.ArticleEntity; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +import java.util.List; + +/** + * Created by tpeetz on 23.01.2015. + */ +public class ArticleImplTest { + + @Before + public void setUp() { + DatabaseManager.setDatabase(new LocalTestDatabase()); + } + + @Test + public void testAddArticle() { + String articleTitle = "testAddArticle"; + ArticleImpl articleImpl = new ArticleImpl(); + ArticleEntity article = articleImpl.addArticle(articleTitle); + Assert.assertNotNull(article); + List articleList = articleImpl.findByTitle(articleTitle); + Assert.assertEquals(1, articleList.size()); + } + + @Test + public void testArticleAddAndDelete() { + + } + + @Test + public void testArticleFindAll() { + + } +} diff --git a/java-ee/KontorApp/src/test/java/com/ibtp/kontor/library/dal/AuthorImplTest.java b/java-ee/KontorApp/src/test/java/com/ibtp/kontor/library/dal/AuthorImplTest.java new file mode 100644 index 0000000..f10caf6 --- /dev/null +++ b/java-ee/KontorApp/src/test/java/com/ibtp/kontor/library/dal/AuthorImplTest.java @@ -0,0 +1,52 @@ +package com.ibtp.kontor.library.dal; + +import com.ibtp.kontor.dal.DatabaseManager; +import com.ibtp.kontor.util.LocalTestDatabase; +import com.ibtp.kontor.library.entity.AuthorEntity; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +import java.util.List; + +/** + * Created by thomas on 23.01.15. + */ +public class AuthorImplTest { + + @Before + public void setUp() { + DatabaseManager.setDatabase(new LocalTestDatabase()); + } + + @Test + public void testAddAuthor() { + String authorName = "testAddAuthor"; + AuthorImpl authorImpl = new AuthorImpl(); + AuthorEntity author = authorImpl.addAuthor(authorName); + Assert.assertNotNull(author); + } + + @Test + public void testDeleteAuthor() { + String authorName = "testDeleteAuthor"; + AuthorImpl authorImpl = new AuthorImpl(); + AuthorEntity author = authorImpl.addAuthor(authorName); + Assert.assertNotNull(author); + List authorList = authorImpl.findByName(authorName); + Assert.assertEquals(1, authorList.size()); + authorImpl.delete(author); + authorList = authorImpl.findByName(authorName); + Assert.assertEquals(0, authorList.size()); + } + + @Test + public void testAuthorAddAndDelete() { + + } + + @Test + public void testAuthorFindAll() { + + } +} diff --git a/java-ee/KontorApp/src/test/java/com/ibtp/kontor/library/dal/BookImplTest.java b/java-ee/KontorApp/src/test/java/com/ibtp/kontor/library/dal/BookImplTest.java new file mode 100644 index 0000000..ba4c6d4 --- /dev/null +++ b/java-ee/KontorApp/src/test/java/com/ibtp/kontor/library/dal/BookImplTest.java @@ -0,0 +1,27 @@ +package com.ibtp.kontor.library.dal; + +import com.ibtp.kontor.dal.DatabaseManager; +import com.ibtp.kontor.util.LocalTestDatabase; +import org.junit.Before; +import org.junit.Test; + +/** + * Created by TPEETZ on 27.01.2015. + */ +public class BookImplTest { + + @Before + public void setUp() { + DatabaseManager.setDatabase(new LocalTestDatabase()); + } + + @Test + public void testBookAddAndDelete() { + + } + + @Test + public void testBookFindAll() { + + } +} diff --git a/java-ee/KontorApp/src/test/java/com/ibtp/kontor/library/dal/FileImplTest.java b/java-ee/KontorApp/src/test/java/com/ibtp/kontor/library/dal/FileImplTest.java new file mode 100644 index 0000000..a0afab6 --- /dev/null +++ b/java-ee/KontorApp/src/test/java/com/ibtp/kontor/library/dal/FileImplTest.java @@ -0,0 +1,27 @@ +package com.ibtp.kontor.library.dal; + +import com.ibtp.kontor.dal.DatabaseManager; +import com.ibtp.kontor.util.LocalTestDatabase; +import org.junit.Before; +import org.junit.Test; + +/** + * Created by TPEETZ on 27.01.2015. + */ +public class FileImplTest { + + @Before + public void setUp() { + DatabaseManager.setDatabase(new LocalTestDatabase()); + } + + @Test + public void testFileAddAndDelete() { + + } + + @Test + public void testFileFindAll() { + + } +} diff --git a/java-ee/KontorApp/src/test/java/com/ibtp/kontor/library/dal/TitleImplTest.java b/java-ee/KontorApp/src/test/java/com/ibtp/kontor/library/dal/TitleImplTest.java new file mode 100644 index 0000000..e6f06bd --- /dev/null +++ b/java-ee/KontorApp/src/test/java/com/ibtp/kontor/library/dal/TitleImplTest.java @@ -0,0 +1,27 @@ +package com.ibtp.kontor.library.dal; + +import com.ibtp.kontor.dal.DatabaseManager; +import com.ibtp.kontor.util.LocalTestDatabase; +import org.junit.Before; +import org.junit.Test; + +/** + * Created by TPEETZ on 27.01.2015. + */ +public class TitleImplTest { + + @Before + public void setUp() { + DatabaseManager.setDatabase(new LocalTestDatabase()); + } + + @Test + public void testTitleAddAndDelete() { + + } + + @Test + public void testTitleFindAll() { + + } +} diff --git a/java-ee/KontorApp/src/test/java/com/ibtp/kontor/tradingcards/CollectionTest.java b/java-ee/KontorApp/src/test/java/com/ibtp/kontor/tradingcards/CollectionTest.java new file mode 100644 index 0000000..d307051 --- /dev/null +++ b/java-ee/KontorApp/src/test/java/com/ibtp/kontor/tradingcards/CollectionTest.java @@ -0,0 +1,167 @@ +package com.ibtp.kontor.tradingcards; + +import com.ibtp.kontor.dal.DatabaseManager; +import com.ibtp.kontor.tradingcards.dal.TeamImpl; +import com.ibtp.kontor.tradingcards.entity.TeamEntity; +import com.ibtp.kontor.util.LocalTestDatabase; +import com.ibtp.kontor.tradingcards.dal.SportImpl; +import com.ibtp.kontor.tradingcards.entity.SportEntity; +import org.junit.After; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +import java.util.Collection; +import java.util.Iterator; + +/** + * Created by TPEETZ on 27.01.2015. + */ +public class CollectionTest { + + @Before + public void setUp() { + DatabaseManager.setDatabase(new LocalTestDatabase()); + setupSports(); + } + + public void setupSports() { + SportImpl sportImpl = new SportImpl(); + SportEntity football = sportImpl.addSport("Football"); + setupFootballTeams(football); + SportEntity baseball = sportImpl.addSport("Baseball"); + setupFootballTeams(baseball); + SportEntity basketball = sportImpl.addSport("Basketball"); + setupBasketballTeams(basketball); + SportEntity hockey = sportImpl.addSport("Hockey"); + setupHockeyTeams(hockey); + } + + public void setupFootballTeams(SportEntity football) { + TeamImpl teamImpl = new TeamImpl(); + teamImpl.addTeam("Dallas Cowboys", football); + teamImpl.addTeam("New York Giants", football); + teamImpl.addTeam("Philadelphia Eagles", football); + teamImpl.addTeam("Arizona Cardinals", football); + teamImpl.addTeam("Washington Redskins", football); + teamImpl.addTeam("Detroit Lions", football); + teamImpl.addTeam("Minnesota Vikings", football); + teamImpl.addTeam("Green Bay Packers", football); + teamImpl.addTeam("Chicago Bears", football); + teamImpl.addTeam("Tampa Bay Buccaneers", football); + teamImpl.addTeam("San Francisco 49ers", football); + teamImpl.addTeam("New Orleans Saints", football); + teamImpl.addTeam("Atlanta Falcons", football); + teamImpl.addTeam("Los Angeles Rams", football); + teamImpl.addTeam("Buffalo Bills", football); + teamImpl.addTeam("Miami Dolphins", football); + teamImpl.addTeam("New York Jets", football); + teamImpl.addTeam("New England Patriots", football); + teamImpl.addTeam("Indianapolis Colts", football); + teamImpl.addTeam("Houston Oilers", football); + teamImpl.addTeam("Pittsburgh Steelers", football); + teamImpl.addTeam("Cleveland Browns", football); + teamImpl.addTeam("Kansas City Chiefs", football); + teamImpl.addTeam("Los Angeles Raiders", football); + teamImpl.addTeam("Denver Broncos", football); + teamImpl.addTeam("San Diego Chargers", football); + teamImpl.addTeam("Seattle Seahawks", football); + teamImpl.addTeam("Jacksonville Jaguars", football); + teamImpl.addTeam("Houston Texans", football); + } + + public void setupBaseballTeams(SportEntity baseball) { + TeamImpl teamImpl = new TeamImpl(); + } + + public void setupBasketballTeams(SportEntity basketball) { + TeamImpl teamImpl = new TeamImpl(); + teamImpl.addTeam("Houston Rockets", basketball); + teamImpl.addTeam("San Antonio Spurs", basketball); + teamImpl.addTeam("Utah Jazz", basketball); + teamImpl.addTeam("Denver Nuggets", basketball); + teamImpl.addTeam("Minnesota Timberwolves", basketball); + teamImpl.addTeam("Dallas Mavericks", basketball); + teamImpl.addTeam("Seattle SuperSonics", basketball); + teamImpl.addTeam("Phoenix Suns", basketball); + teamImpl.addTeam("Golden State Warriors", basketball); + teamImpl.addTeam("Portland Trail Blazers", basketball); + teamImpl.addTeam("Los Angeles Lakers", basketball); + teamImpl.addTeam("Sacramento Kings", basketball); + teamImpl.addTeam("Los Angeles Clippers", basketball); + teamImpl.addTeam("New York Knicks", basketball); + teamImpl.addTeam("Orlando Magic", basketball); + teamImpl.addTeam("New Jersey Nets", basketball); + teamImpl.addTeam("Miami Heat", basketball); + teamImpl.addTeam("Boston Celtics", basketball); + teamImpl.addTeam("Philadelphia 76ers", basketball); + teamImpl.addTeam("Washington Bullets", basketball); + teamImpl.addTeam("Atlanta Hawks", basketball); + teamImpl.addTeam("Chicago Bulls", basketball); + teamImpl.addTeam("Indiana Pacers", basketball); + teamImpl.addTeam("Cleveland Cavaliers", basketball); + teamImpl.addTeam("Charlotte Hornets", basketball); + teamImpl.addTeam("Detroit Pistons", basketball); + teamImpl.addTeam("Milwaukee Bucks", basketball); + } + + public void setupHockeyTeams(SportEntity hockey) { + TeamImpl teamImpl = new TeamImpl(); + teamImpl.addTeam("New York Rangers", hockey); + teamImpl.addTeam("Buffalo Sabers", hockey); + teamImpl.addTeam("Detroit Red Wings", hockey); + teamImpl.addTeam("Vancouver Canucks", hockey); + teamImpl.addTeam("Mighty Ducks of Anaheim", hockey); + teamImpl.addTeam("Calgary Flames", hockey); + teamImpl.addTeam("Edmonton Oilers", hockey); + teamImpl.addTeam("Los Angeles Kings", hockey); + teamImpl.addTeam("San Jose Sharks", hockey); + teamImpl.addTeam("Chicago Blackhawks", hockey); + teamImpl.addTeam("Dallas Stars", hockey); + teamImpl.addTeam("St. Louis Blues", hockey); + teamImpl.addTeam("Toronto Maple Leafs", hockey); + teamImpl.addTeam("Winnipeg Jets", hockey); + teamImpl.addTeam("Boston Bruins", hockey); + teamImpl.addTeam("Hartford Whalers", hockey); + teamImpl.addTeam("Montreal Canadiers", hockey); + teamImpl.addTeam("Ottawa Senators", hockey); + teamImpl.addTeam("Pittsburgh Penguins", hockey); + teamImpl.addTeam("Quebec Nordiques", hockey); + teamImpl.addTeam("Florida Panthers", hockey); + teamImpl.addTeam("New Jersey Devils", hockey); + teamImpl.addTeam("New York Islanders", hockey); + teamImpl.addTeam("Philadelphia Flyers", hockey); + teamImpl.addTeam("Tamba Bay Lightning", hockey); + teamImpl.addTeam("Washington Capitals", hockey); + } + + @After + public void tearDown() { + TeamImpl teamImpl = new TeamImpl(); + Collection teamEntities = teamImpl.findAll(); + for (Iterator iterator = teamEntities.iterator(); iterator.hasNext(); ) { + TeamEntity next = iterator.next(); + teamImpl.delete(next); + } + SportImpl sportImpl = new SportImpl(); + Collection sportEntities = sportImpl.findAll(); + for (Iterator iterator = sportEntities.iterator(); iterator.hasNext(); ) { + SportEntity next = iterator.next(); + sportImpl.delete(next); + } + } + + @Test + public void gettAllSports() { + SportImpl sportImpl = new SportImpl(); + Collection resultList = sportImpl.findAll(); + Assert.assertEquals(4, resultList.size()); + } + + @Test + public void getAllTeams() { + TeamImpl teamImpl = new TeamImpl(); + Collection resultList = teamImpl.findAll(); + Assert.assertEquals(111, resultList.size()); + } +} diff --git a/java-ee/KontorApp/src/test/java/com/ibtp/kontor/tradingcards/dal/BaseSetImplTest.java b/java-ee/KontorApp/src/test/java/com/ibtp/kontor/tradingcards/dal/BaseSetImplTest.java new file mode 100644 index 0000000..00785cc --- /dev/null +++ b/java-ee/KontorApp/src/test/java/com/ibtp/kontor/tradingcards/dal/BaseSetImplTest.java @@ -0,0 +1,27 @@ +package com.ibtp.kontor.tradingcards.dal; + +import com.ibtp.kontor.dal.DatabaseManager; +import com.ibtp.kontor.util.LocalTestDatabase; +import org.junit.Before; +import org.junit.Test; + +/** + * Created by tpeetz on 27.01.2015. + */ +public class BaseSetImplTest { + + @Before + public void setUp() { + DatabaseManager.setDatabase(new LocalTestDatabase()); + } + + @Test + public void testBaseSetAddAndDelete() { + + } + + @Test + public void testBaseSetFindAll() { + + } +} diff --git a/java-ee/KontorApp/src/test/java/com/ibtp/kontor/tradingcards/dal/InsertImplTest.java b/java-ee/KontorApp/src/test/java/com/ibtp/kontor/tradingcards/dal/InsertImplTest.java new file mode 100644 index 0000000..c7fe97a --- /dev/null +++ b/java-ee/KontorApp/src/test/java/com/ibtp/kontor/tradingcards/dal/InsertImplTest.java @@ -0,0 +1,28 @@ +package com.ibtp.kontor.tradingcards.dal; + +import com.ibtp.kontor.dal.DatabaseManager; +import com.ibtp.kontor.util.LocalTestDatabase; +import org.junit.Before; +import org.junit.Test; + +/** + * Created by tpeetz on 27.01.2015. + */ +public class InsertImplTest { + + @Before + public void setUp() { + DatabaseManager.setDatabase(new LocalTestDatabase()); + } + + + @Test + public void testInsertAddAndDelete() { + + } + + @Test + public void testInsertFindAll() { + + } +} diff --git a/java-ee/KontorApp/src/test/java/com/ibtp/kontor/tradingcards/dal/ManufacturerImplTest.java b/java-ee/KontorApp/src/test/java/com/ibtp/kontor/tradingcards/dal/ManufacturerImplTest.java new file mode 100644 index 0000000..972aa84 --- /dev/null +++ b/java-ee/KontorApp/src/test/java/com/ibtp/kontor/tradingcards/dal/ManufacturerImplTest.java @@ -0,0 +1,52 @@ +package com.ibtp.kontor.tradingcards.dal; + +import com.ibtp.kontor.dal.DatabaseManager; +import com.ibtp.kontor.util.LocalTestDatabase; +import com.ibtp.kontor.tradingcards.entity.ManufacturerEntity; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +import java.util.List; + +/** + * Created by tpeetz on 20.01.2015. + */ +public class ManufacturerImplTest { + + @Before + public void setup() { + DatabaseManager.setDatabase(new LocalTestDatabase()); + } + + @Test + public void addManufacturer() { + String manufacturerName = "Manufacturer1"; + ManufacturerImpl manufacturerImpl = new ManufacturerImpl(); + ManufacturerEntity manufacturer = manufacturerImpl.addManufacturer(manufacturerName); + Assert.assertNotNull(manufacturer); + List manufacturerList = manufacturerImpl.findByName(manufacturerName); + Assert.assertTrue(manufacturerList.size() > 0); + } + + @Test + public void deleteManufacturer() { + String manufacturerName = "Manufacturer1"; + ManufacturerImpl manufacturerImpl = new ManufacturerImpl(); + List manufacturerList = manufacturerImpl.findByName(manufacturerName); + Assert.assertTrue(manufacturerList.size() > 0); + manufacturerImpl.delete(manufacturerList.get(0)); + manufacturerList = manufacturerImpl.findByName(manufacturerName); + Assert.assertEquals(0, manufacturerList.size()); + } + + @Test + public void testManufacturerAddAndDelete() { + + } + + @Test + public void testManufacturerFindAll() { + + } +} diff --git a/java-ee/KontorApp/src/test/java/com/ibtp/kontor/tradingcards/dal/ParallelSetImplTest.java b/java-ee/KontorApp/src/test/java/com/ibtp/kontor/tradingcards/dal/ParallelSetImplTest.java new file mode 100644 index 0000000..19cc143 --- /dev/null +++ b/java-ee/KontorApp/src/test/java/com/ibtp/kontor/tradingcards/dal/ParallelSetImplTest.java @@ -0,0 +1,27 @@ +package com.ibtp.kontor.tradingcards.dal; + +import com.ibtp.kontor.dal.DatabaseManager; +import com.ibtp.kontor.util.LocalTestDatabase; +import org.junit.Before; +import org.junit.Test; + +/** + * Created by tpeetz on 27.01.2015. + */ +public class ParallelSetImplTest { + + @Before + public void setUp() { + DatabaseManager.setDatabase(new LocalTestDatabase()); + } + + @Test + public void testParallelSetAddAndDelete() { + + } + + @Test + public void testParallelSetFindAll() { + + } +} diff --git a/java-ee/KontorApp/src/test/java/com/ibtp/kontor/tradingcards/dal/PlayerImplTest.java b/java-ee/KontorApp/src/test/java/com/ibtp/kontor/tradingcards/dal/PlayerImplTest.java new file mode 100644 index 0000000..6aca0db --- /dev/null +++ b/java-ee/KontorApp/src/test/java/com/ibtp/kontor/tradingcards/dal/PlayerImplTest.java @@ -0,0 +1,27 @@ +package com.ibtp.kontor.tradingcards.dal; + +import com.ibtp.kontor.dal.DatabaseManager; +import com.ibtp.kontor.util.LocalTestDatabase; +import org.junit.Before; +import org.junit.Test; + +/** + * Created by tpeetz on 27.01.2015. + */ +public class PlayerImplTest { + + @Before + public void setUp() { + DatabaseManager.setDatabase(new LocalTestDatabase()); + } + + @Test + public void testPlayerAddAndDelete() { + + } + + @Test + public void testPlayerFindAll() { + + } +} diff --git a/java-ee/KontorApp/src/test/java/com/ibtp/kontor/tradingcards/dal/PositionImplTest.java b/java-ee/KontorApp/src/test/java/com/ibtp/kontor/tradingcards/dal/PositionImplTest.java new file mode 100644 index 0000000..3d2019b --- /dev/null +++ b/java-ee/KontorApp/src/test/java/com/ibtp/kontor/tradingcards/dal/PositionImplTest.java @@ -0,0 +1,42 @@ +package com.ibtp.kontor.tradingcards.dal; + +import com.ibtp.kontor.dal.DatabaseManager; +import com.ibtp.kontor.util.LocalTestDatabase; +import com.ibtp.kontor.tradingcards.entity.PositionEntity; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +import java.util.Collection; + +/** + * Created by tpeetz on 27.01.2015. + */ +public class PositionImplTest { + + @Before + public void setUp() { + DatabaseManager.setDatabase(new LocalTestDatabase()); + } + + @Test + public void testPositionAddAndDelete() { + String positionName = "testPositionAddAndDelete"; + PositionImpl positionImpl = new PositionImpl(); + PositionEntity position = positionImpl.addPosition(positionName); + Collection resultList = positionImpl.findByName(positionName); + Assert.assertNotNull(resultList); + Assert.assertEquals(1, resultList.size()); + positionImpl.delete(position); + resultList = positionImpl.findByName(positionName); + Assert.assertEquals(0, resultList.size()); + } + + @Test + public void testPositionFindAll() { + PositionImpl positionImpl = new PositionImpl(); + Collection resultList = positionImpl.findAll(); + Assert.assertEquals(0, resultList.size()); + } +} + diff --git a/java-ee/KontorApp/src/test/java/com/ibtp/kontor/tradingcards/dal/SportCardImplTest.java b/java-ee/KontorApp/src/test/java/com/ibtp/kontor/tradingcards/dal/SportCardImplTest.java new file mode 100644 index 0000000..4e9d190 --- /dev/null +++ b/java-ee/KontorApp/src/test/java/com/ibtp/kontor/tradingcards/dal/SportCardImplTest.java @@ -0,0 +1,27 @@ +package com.ibtp.kontor.tradingcards.dal; + +import com.ibtp.kontor.dal.DatabaseManager; +import com.ibtp.kontor.util.LocalTestDatabase; +import org.junit.Before; +import org.junit.Test; + +/** + * Created by tpeetz on 27.01.2015. + */ +public class SportCardImplTest { + + @Before + public void setUp() { + DatabaseManager.setDatabase(new LocalTestDatabase()); + } + + @Test + public void testSportCardAddAndDelete() { + + } + + @Test + public void testSportCardFindAll() { + + } +} diff --git a/java-ee/KontorApp/src/test/java/com/ibtp/kontor/tradingcards/dal/SportImplTest.java b/java-ee/KontorApp/src/test/java/com/ibtp/kontor/tradingcards/dal/SportImplTest.java new file mode 100644 index 0000000..f8053c5 --- /dev/null +++ b/java-ee/KontorApp/src/test/java/com/ibtp/kontor/tradingcards/dal/SportImplTest.java @@ -0,0 +1,41 @@ +package com.ibtp.kontor.tradingcards.dal; + +import com.ibtp.kontor.dal.DatabaseManager; +import com.ibtp.kontor.util.LocalTestDatabase; +import com.ibtp.kontor.tradingcards.entity.SportEntity; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +import java.util.Collection; +import java.util.List; + +/** + * Created by TPEETZ on 19.01.2015. + */ +public class SportImplTest { + + @Before + public void setUp() { + DatabaseManager.setDatabase(new LocalTestDatabase()); + } + + @Test + public void testSportAddAndDelete() { + String sportName = "testSportAddAndDelete"; + SportImpl sportImpl = new SportImpl(); + SportEntity sport = sportImpl.addSport(sportName); + List sportList = sportImpl.findByName(sportName); + Assert.assertEquals(1, sportList.size()); + sportImpl.delete(sport); + List result = sportImpl.findByName(sportName); + Assert.assertEquals(0, result.size()); + } + + @Test + public void testSportFindAll() { + SportImpl sportImpl = new SportImpl(); + Collection resultList = sportImpl.findAll(); + Assert.assertEquals(0, resultList.size()); + } +} diff --git a/java-ee/KontorApp/src/test/java/com/ibtp/kontor/tradingcards/dal/TeamImplTest.java b/java-ee/KontorApp/src/test/java/com/ibtp/kontor/tradingcards/dal/TeamImplTest.java new file mode 100644 index 0000000..1cfec7b --- /dev/null +++ b/java-ee/KontorApp/src/test/java/com/ibtp/kontor/tradingcards/dal/TeamImplTest.java @@ -0,0 +1,41 @@ +package com.ibtp.kontor.tradingcards.dal; + +import com.ibtp.kontor.dal.DatabaseManager; +import com.ibtp.kontor.util.LocalTestDatabase; +import com.ibtp.kontor.tradingcards.entity.TeamEntity; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +import java.util.Collection; + +/** + * Created by tpeetz on 20.01.2015. + */ +public class TeamImplTest { + + @Before + public void setUp() { + DatabaseManager.setDatabase(new LocalTestDatabase()); + } + + @Test + public void testTeamAddAndDelete() { + String teamName = "testTeamAddAndDelete"; + TeamEntity team = new TeamEntity(teamName); + TeamImpl teamImpl = new TeamImpl(); + teamImpl.store(team); + Collection resultList = teamImpl.findByName(teamName); + Assert.assertEquals(1, resultList.size()); + teamImpl.delete(team); + resultList = teamImpl.findByName(teamName); + Assert.assertEquals(0, resultList.size()); + } + + @Test + public void testTeamFindAll() { + TeamImpl teamImpl = new TeamImpl(); + Collection resultList = teamImpl.findAll(); + Assert.assertEquals(0, resultList.size()); + } +} diff --git a/java-ee/KontorApp/src/test/java/com/ibtp/kontor/util/LocalTestDatabase.java b/java-ee/KontorApp/src/test/java/com/ibtp/kontor/util/LocalTestDatabase.java new file mode 100644 index 0000000..503104a --- /dev/null +++ b/java-ee/KontorApp/src/test/java/com/ibtp/kontor/util/LocalTestDatabase.java @@ -0,0 +1,110 @@ +package com.ibtp.kontor.util; + +import com.ibtp.kontor.dal.Database; +import org.hibernate.jpa.HibernatePersistenceProvider; +import org.hsqldb.Server; + +import javax.persistence.EntityManager; +import javax.persistence.EntityManagerFactory; +import javax.persistence.Persistence; +import javax.persistence.spi.PersistenceProvider; +import javax.persistence.spi.PersistenceProviderResolver; +import javax.persistence.spi.PersistenceProviderResolverHolder; +import java.io.PrintWriter; +import java.util.Arrays; +import java.util.List; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * Created by TPEETZ on 21.01.2015. + */ +public class LocalTestDatabase implements Database { + + private static Server server; + private static EntityManagerFactory factory; + private static EntityManager em; + private static Logger logger = LoggerFactory.getLogger(LocalTestDatabase.class.getName()); + + static { + logger.info("initialization and starting database"); + LocalTestDatabase.assureDatabaseRunning(); + } + + public LocalTestDatabase() { + logger.info("LocalDatabaseTest started"); + } + + private static void assureDatabaseRunning() { + if (LocalTestDatabase.server == null) { + LocalTestDatabase.startDatabase(); + } + } + + private static void startDatabase() { + logger.info("startDatabase as kontor in hsqldb_databases/test"); + LocalTestDatabase.server = new Server(); + LocalTestDatabase.server.setAddress("localhost"); + LocalTestDatabase.server.setDatabaseName(0, "kontor"); + LocalTestDatabase.server.setDatabasePath(0, "file:build/hsqldb_databases/test"); + LocalTestDatabase.server.setPort(2345); + LocalTestDatabase.server.setTrace(true); + LocalTestDatabase.server.setLogWriter(new PrintWriter(System.out)); + LocalTestDatabase.server.start(); + } + + private static void stopDatabase() { + server.shutdown(); + } + + private static EntityManagerFactory getFactory() { + if (LocalTestDatabase.factory == null) { + LocalTestDatabase.assureDatabaseRunning(); + PersistenceProviderResolverHolder.setPersistenceProviderResolver(new PersistenceProviderResolver() { + private final List providers_ = Arrays.asList((PersistenceProvider) new HibernatePersistenceProvider()); + + @Override + public void clearCachedProviders() { + // Auto-generated method stub + } + + @Override + public List getPersistenceProviders() { + return providers_; + } + }); + LocalTestDatabase.factory = Persistence.createEntityManagerFactory("com.ibtp.kontor"); + logger.info("EntityManagerFactory(com.ibtp.kontor) created"); + } + return factory; + } + + private static EntityManager getSingleEntityManager() { + return LocalTestDatabase.em; + } + + private static void setSingleEntityManager(EntityManager manager) { + LocalTestDatabase.em = manager; + } + + @Override + public EntityManager getEntityManager() { + if (getSingleEntityManager() == null) { + setSingleEntityManager(getFactory().createEntityManager()); + logger.info("EntityManager created"); + } + return getSingleEntityManager(); + } + + @Override + public String toString() { + String serverMessage; + if (LocalTestDatabase.server == null) { + serverMessage = "server:null"; + } else { + serverMessage = LocalTestDatabase.server.toString(); + } + return LocalTestDatabase.class.getName() + " " + serverMessage; + } +} diff --git a/java-ee/KontorApp/src/test/resources/META-INF/persistence.xml b/java-ee/KontorApp/src/test/resources/META-INF/persistence.xml new file mode 100644 index 0000000..35d671b --- /dev/null +++ b/java-ee/KontorApp/src/test/resources/META-INF/persistence.xml @@ -0,0 +1,39 @@ + + + org.hibernate.jpa.HibernatePersistenceProvider + com.ibtp.kontor.comics.entity.ArtistEntity + com.ibtp.kontor.comics.entity.ComicEntity + com.ibtp.kontor.comics.entity.IssueEntity + com.ibtp.kontor.comics.entity.StoryArcEntity + com.ibtp.kontor.comics.entity.VolumeEntity + com.ibtp.kontor.comics.entity.PublisherEntity + com.ibtp.kontor.library.entity.AuthorEntity + com.ibtp.kontor.library.entity.ArticleEntity + com.ibtp.kontor.library.entity.BookEntity + com.ibtp.kontor.library.entity.FileEntity + com.ibtp.kontor.library.entity.TitleEntity + com.ibtp.kontor.tradingcards.entity.SportEntity + com.ibtp.kontor.tradingcards.entity.TeamEntity + com.ibtp.kontor.tradingcards.entity.PositionEntity + com.ibtp.kontor.tradingcards.entity.PlayerEntity + com.ibtp.kontor.tradingcards.entity.ManufacturerEntity + com.ibtp.kontor.tradingcards.entity.BaseSetEntity + com.ibtp.kontor.tradingcards.entity.InsertEntity + com.ibtp.kontor.tradingcards.entity.ParallelSetEntity + com.ibtp.kontor.tradingcards.entity.SportCardEntity + + + + + + + + + + + + + diff --git a/java-ee/KontorApp/src/test/resources/logback.xml b/java-ee/KontorApp/src/test/resources/logback.xml new file mode 100644 index 0000000..5254e50 --- /dev/null +++ b/java-ee/KontorApp/src/test/resources/logback.xml @@ -0,0 +1,41 @@ + + + + + + %d{yyyy-MM-dd_HH:mm:ss.SSS} %-5level %logger{36} - %msg%n + + + + + + build/kontortest.log + + %d{yyyy-MM-dd_HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + + + + build/kontortest.%i.log.zip + 1 + 10 + + + + 2MB + + + + + + + + + + + + + + diff --git a/java-ee/KontorEJB/build.gradle b/java-ee/KontorEJB/build.gradle new file mode 100755 index 0000000..5f1dfc0 --- /dev/null +++ b/java-ee/KontorEJB/build.gradle @@ -0,0 +1,12 @@ +apply plugin: 'java' + +dependencies { + compile 'javax.enterprise:cdi-api:+' + compile 'org.jboss.spec.javax.faces:jboss-jsf-api_2.2_spec:+' + compile 'org.jboss.spec.javax.ejb:jboss-ejb-api_3.2_spec:+' + compile 'org.jboss.spec.javax.annotation:jboss-annotations-api_1.2_spec:+' + compile 'org.hibernate.ogm:hibernate-ogm-mongodb:+' + compile 'org.eclipse.persistence:javax.persistence:2.1.0' + compile 'ch.qos.logback:logback-core:1.1.2' + compile 'ch.qos.logback:logback-classic:1.1.2' +} diff --git a/java-ee/KontorEJB/src/main/java/com/ibtp/kontor/ejb/Controller.java b/java-ee/KontorEJB/src/main/java/com/ibtp/kontor/ejb/Controller.java new file mode 100755 index 0000000..67b84ce --- /dev/null +++ b/java-ee/KontorEJB/src/main/java/com/ibtp/kontor/ejb/Controller.java @@ -0,0 +1,62 @@ +package com.ibtp.kontor.ejb; + +import com.ibtp.kontor.ejb.PropertyManager; +import com.ibtp.kontor.ejb.Property; + +import java.util.List; +import javax.annotation.PostConstruct; +import javax.enterprise.inject.Model; + +import javax.inject.Inject; + +@Model +public class Controller { + + List propertyList; + + private String key; + private String value; + + @PostConstruct + public void readDB() { + propertyList = ejb.queryCache(); + + } + @Inject + PropertyManager ejb; + + public void save() { + Property p = new Property(); + p.setKey(key); + p.setValue(value); + ejb.save(p); + propertyList.add(p); + key = ""; + value = ""; + } + + public List getPropertyList() { + return propertyList; + } + + public void setPropertyList(List propertyList) { + this.propertyList = propertyList; + } + + public String getKey() { + return key; + } + + public void setKey(String key) { + this.key = key; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + +} \ No newline at end of file diff --git a/java-ee/KontorEJB/src/main/java/com/ibtp/kontor/ejb/Property.java b/java-ee/KontorEJB/src/main/java/com/ibtp/kontor/ejb/Property.java new file mode 100755 index 0000000..d2fab7b --- /dev/null +++ b/java-ee/KontorEJB/src/main/java/com/ibtp/kontor/ejb/Property.java @@ -0,0 +1,37 @@ +package com.ibtp.kontor.ejb; + + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import org.hibernate.annotations.GenericGenerator; + +@Entity +public class Property { + + @Id + @GeneratedValue(generator = "uuid") + @GenericGenerator(name = "uuid", strategy = "uuid2") + private String id; + + private String key; + + private String value; + + public String getKey() { + return key; + } + + public void setKey(String key) { + this.key = key; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + +} \ No newline at end of file diff --git a/java-ee/KontorEJB/src/main/java/com/ibtp/kontor/ejb/PropertyManager.java b/java-ee/KontorEJB/src/main/java/com/ibtp/kontor/ejb/PropertyManager.java new file mode 100755 index 0000000..865a0bd --- /dev/null +++ b/java-ee/KontorEJB/src/main/java/com/ibtp/kontor/ejb/PropertyManager.java @@ -0,0 +1,28 @@ +package com.ibtp.kontor.ejb; + +import java.util.List; + +import javax.persistence.EntityManager; +import javax.persistence.PersistenceContext; +import javax.persistence.Query; + +import com.ibtp.kontor.ejb.Property; +import javax.ejb.Stateless; + +@Stateless + public class PropertyManager { + + @PersistenceContext(unitName = "mongo-ogm") + private EntityManager em; + + public void save(Property p) { + em.persist(p); + } + + public List queryCache() { + Query query = em.createQuery("FROM Property p"); + + List list = query.getResultList(); + return list; + } +} \ No newline at end of file diff --git a/java-ee/KontorImpl/build.gradle b/java-ee/KontorImpl/build.gradle new file mode 100644 index 0000000..b1512a8 --- /dev/null +++ b/java-ee/KontorImpl/build.gradle @@ -0,0 +1,5 @@ +jar { + manifest { + attributes 'Implementation-Title': 'Kontor', 'Implementation-Version': version + } +} diff --git a/java-ee/KontorImpl/config/checkstyle/checkstyle.xml b/java-ee/KontorImpl/config/checkstyle/checkstyle.xml new file mode 100644 index 0000000..7c682c3 --- /dev/null +++ b/java-ee/KontorImpl/config/checkstyle/checkstyle.xml @@ -0,0 +1,192 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java-ee/KontorImpl/config/checkstyle/checkstyle.xsl b/java-ee/KontorImpl/config/checkstyle/checkstyle.xsl new file mode 100644 index 0000000..393a01b --- /dev/null +++ b/java-ee/KontorImpl/config/checkstyle/checkstyle.xsl @@ -0,0 +1,179 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +

CheckStyle Audit

Designed for use with CheckStyle and Ant.
+
+ + + +
+ + + +
+ + + + + +

+

+ +


+ + + + +
+ + + + +

Files

+ + + + + + + + + + + + + + +
NameErrors
+
+ + + + +

File

+ + + + + + + + + + + + + +
Error DescriptionLine
+ Back to top +
+ + + +

Summary

+ + + + + + + + + + + + +
FilesErrors
+
+ + + + a + b + + +
+ + diff --git a/java-ee/KontorImpl/config/findbugs/findbugs.xml b/java-ee/KontorImpl/config/findbugs/findbugs.xml new file mode 100644 index 0000000..34a6e01 --- /dev/null +++ b/java-ee/KontorImpl/config/findbugs/findbugs.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/java-ee/KontorImpl/src/main/java/com/peetz/kontor/dal/KontorUserDao.java b/java-ee/KontorImpl/src/main/java/com/peetz/kontor/dal/KontorUserDao.java new file mode 100644 index 0000000..f2c37f6 --- /dev/null +++ b/java-ee/KontorImpl/src/main/java/com/peetz/kontor/dal/KontorUserDao.java @@ -0,0 +1,16 @@ +package com.peetz.kontor.dal; + +import java.util.List; + +import javax.ejb.Local; + +import com.peetz.kontor.entity.KontorUserEntity; + +@Local +public interface KontorUserDao { + public KontorUserEntity getById(Long id); + public List findByIds(List ids); + public KontorUserEntity findByLogin(String login); + public KontorUserEntity store(KontorUserEntity entity); + public void delete(KontorUserEntity entity); +} diff --git a/java-ee/KontorImpl/src/main/java/com/peetz/kontor/dal/KontorUserImpl.java b/java-ee/KontorImpl/src/main/java/com/peetz/kontor/dal/KontorUserImpl.java new file mode 100644 index 0000000..3dee67f --- /dev/null +++ b/java-ee/KontorImpl/src/main/java/com/peetz/kontor/dal/KontorUserImpl.java @@ -0,0 +1,53 @@ +package com.peetz.kontor.dal; + +import java.util.List; + +import javax.ejb.Stateless; +import javax.ejb.TransactionAttribute; +import javax.ejb.TransactionAttributeType; +import javax.persistence.EntityManager; +import javax.persistence.PersistenceContext; +import javax.persistence.Query; + +import com.peetz.kontor.entity.KontorUserEntity; + +@Stateless(name = "ComicDao") +@TransactionAttribute(TransactionAttributeType.REQUIRED) +public class KontorUserImpl implements KontorUserDao { + + @PersistenceContext + private EntityManager em; + + @Override + public KontorUserEntity getById(Long id) { + Query q = em.createNamedQuery("findById"); + q.setParameter("id", id); + KontorUserEntity entity = (KontorUserEntity)q.getSingleResult(); + return entity; + } + + @Override + public List findByIds(List ids) { + // TODO Auto-generated method stub + return null; + } + + @Override + public KontorUserEntity findByLogin(String login) { + Query q = em.createNamedQuery("findByLogin"); + q.setParameter("login", login); + KontorUserEntity entity = (KontorUserEntity)q.getSingleResult(); + return entity; + } + + @Override + public KontorUserEntity store(KontorUserEntity entity) { + em.persist(entity); + return entity; + } + + @Override + public void delete(KontorUserEntity entity) { + em.remove(entity); + } +} diff --git a/java-ee/KontorImpl/src/main/java/com/peetz/kontor/entity/KontorUserEntity.java b/java-ee/KontorImpl/src/main/java/com/peetz/kontor/entity/KontorUserEntity.java new file mode 100644 index 0000000..5b8a0b5 --- /dev/null +++ b/java-ee/KontorImpl/src/main/java/com/peetz/kontor/entity/KontorUserEntity.java @@ -0,0 +1,62 @@ +package com.peetz.kontor.entity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.NamedQueries; +import javax.persistence.NamedQuery; +import javax.persistence.Table; + +@NamedQueries({ + @NamedQuery(name="findAll", query="SELECT u from KontorUser as u"), + @NamedQuery(name="findById", query="SELECT u from KontorUser as u WHERE u.id = :id"), + @NamedQuery(name="findByLogin", query="SELECT u from KontorUser as u WHERE u.login = :login") +}) + +@Entity +@Table(name="KONTORUSER") +public class KontorUserEntity { + private Long id; + + private String login; + + private String password; + + private String name; + + @Id + @GeneratedValue(strategy=GenerationType.AUTO) + public Long getId() { return id; } + + @SuppressWarnings("unused") + private void setId(Long id) { this.id = id; } + + @Column + public String getLogin() { + return login; + } + + public void setLogin(String login) { + this.login = login; + } + + @Column + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + @Column + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} diff --git a/java-ee/KontorImpl/src/main/java/com/peetz/kontor/service/package-info.java b/java-ee/KontorImpl/src/main/java/com/peetz/kontor/service/package-info.java new file mode 100644 index 0000000..e64dc61 --- /dev/null +++ b/java-ee/KontorImpl/src/main/java/com/peetz/kontor/service/package-info.java @@ -0,0 +1,8 @@ +/** + * + */ +/** + * @author TPEETZ + * + */ +package com.peetz.kontor.service; \ No newline at end of file diff --git a/java-ee/KontorWeb/build.gradle b/java-ee/KontorWeb/build.gradle new file mode 100755 index 0000000..e6eb2e0 --- /dev/null +++ b/java-ee/KontorWeb/build.gradle @@ -0,0 +1,11 @@ +apply plugin: 'war' + +version = '0.0.1' + +dependencies { + compile project(':KontorEJB') + compile project(':ComicsWeb') + compile project(':MedienWeb') + compile project(':LibraryWeb') + compile project(':TradingCardsWeb') +} diff --git a/java-ee/KontorWeb/src/main/java/com/peetz/kontor/data/ExportComics.java b/java-ee/KontorWeb/src/main/java/com/peetz/kontor/data/ExportComics.java new file mode 100644 index 0000000..180eeda --- /dev/null +++ b/java-ee/KontorWeb/src/main/java/com/peetz/kontor/data/ExportComics.java @@ -0,0 +1,88 @@ +package com.peetz.kontor.data; + +import java.util.Collection; +import java.util.Iterator; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; + +import com.peetz.comics.entity.ArtistEntity; +import com.peetz.comics.entity.ComicEntity; +import com.peetz.comics.entity.IssueEntity; +import com.peetz.comics.entity.PublisherEntity; +import com.peetz.comics.entity.StoryArcEntity; +import com.peetz.comics.service.ComicService; + +public class ExportComics +{ + public Element backupComics(Document document) + { + Element comics = document.createElement("comics"); + ComicService comicService = getComicService(); + if (comicService == null) return comics; + + Collection publishers = comicService.getAllPublisher(); + Iterator publisher_iterator = publishers.iterator(); + while (publisher_iterator.hasNext()) { + PublisherEntity publisher = publisher_iterator.next(); + Element publisherNode = document.createElement("publisher"); + publisherNode.setAttribute("id", publisher.getId().toString()); + publisherNode.setAttribute("name", publisher.getName()); + comics.appendChild(publisherNode); + comics.appendChild(document.createTextNode("\n")); + } + Collection artists = comicService.getAllArtists(); + Iterator artist_iterator = artists.iterator(); + while(artist_iterator.hasNext()) { + ArtistEntity artist = artist_iterator.next(); + Element artistNode = document.createElement("artist"); + artistNode.setAttribute("id", artist.getId().toString()); + artistNode.setAttribute("name", artist.getName()); + comics.appendChild(artistNode); + comics.appendChild(document.createTextNode("\n")); + } + Collection comicList = comicService.getAllComics(); + Iterator comics_iterator = comicList.iterator(); + while(comics_iterator.hasNext()) { + ComicEntity comic = comics_iterator.next(); + Element comicNode = document.createElement("comic"); + comicNode.setAttribute("id", comic.getId().toString()); + comicNode.setAttribute("title", comic.getTitle()); + String completed = "false"; + if (comic.getCompleted() != null) completed = comic.getCompleted().toString(); + comicNode.setAttribute("complete", completed); + String currentOrder = "false"; + if (comic.getCurrentOrder() != null) currentOrder = comic.getCurrentOrder().toString(); + comicNode.setAttribute("order", currentOrder); + Collection issues = comicService.getAllIssuesForComic(comic); + Iterator issues_iterator = issues.iterator(); + comicNode.appendChild(document.createTextNode("\n")); + while(issues_iterator.hasNext()) { + IssueEntity issue = issues_iterator.next(); + Element issueNode = document.createElement("issue"); + issueNode.setAttribute("id", issue.getId().toString()); + issueNode.setAttribute("number", issue.getNumber()); + comicNode.appendChild(issueNode); + comicNode.appendChild(document.createTextNode("\n")); + } + comics.appendChild(comicNode); + comics.appendChild(document.createTextNode("\n")); + } + Collection storyArcs = comicService.getAllStoryArcs(); + Iterator iterator_storyArcsIterator = storyArcs.iterator(); + while(iterator_storyArcsIterator.hasNext()) { + StoryArcEntity storyArc = iterator_storyArcsIterator.next(); + Element storyNode = document.createElement("storyArc"); + storyNode.setAttribute("id", storyArc.getId().toString()); + storyNode.setAttribute("title", storyArc.getTitle()); + comics.appendChild(storyNode); + comics.appendChild(document.createTextNode("\n")); + } + return comics; + } + + private ComicService getComicService() + { + return null; + } +} diff --git a/java-ee/KontorWeb/src/main/java/com/peetz/kontor/data/ExportLibrary.java b/java-ee/KontorWeb/src/main/java/com/peetz/kontor/data/ExportLibrary.java new file mode 100644 index 0000000..1c17da9 --- /dev/null +++ b/java-ee/KontorWeb/src/main/java/com/peetz/kontor/data/ExportLibrary.java @@ -0,0 +1,100 @@ +package com.peetz.kontor.data; + +import java.util.Collection; +import java.util.Iterator; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; + +import com.peetz.library.entity.ArticleEntity; +import com.peetz.library.entity.BookEntity; +import com.peetz.library.entity.BookshelfEntity; +import com.peetz.library.entity.ShelfboardEntity; +import com.peetz.library.service.LibraryService; + +public class ExportLibrary +{ + public Element backupLibrary(Document document) + { + Element library = document.createElement("library"); + library.appendChild(document.createTextNode("\n")); + LibraryService libraryService = getLibraryService(); + + Collection books = libraryService.getAllBooks(); + Iterator iterator_books = books.iterator(); + while(iterator_books.hasNext()) { + BookEntity book = iterator_books.next(); + Element bookNode = document.createElement("book"); + bookNode.setAttribute("id", book.getId().toString()); + bookNode.setAttribute("title", book.getTitle()); + bookNode.setAttribute("author", book.getAuthor()); + bookNode.setAttribute("edition", book.getEdition()); + bookNode.setAttribute("isbn", book.getIsbn()); + bookNode.setAttribute("pages", book.getPage().toString()); + bookNode.setAttribute("publisher", book.getPublisher()); + library.appendChild(bookNode); + library.appendChild(document.createTextNode("\n")); + } + + Collection bookshelfs = libraryService.getAllBookshelfs(); + Iterator iterator_bookshelfs = bookshelfs.iterator(); + while(iterator_bookshelfs.hasNext()) { + BookshelfEntity bookshelf = iterator_bookshelfs.next(); + Element shelfNode = document.createElement("shelf"); + shelfNode.setAttribute("id", bookshelf.getId().toString()); + shelfNode.setAttribute("title", bookshelf.getTitle()); + + shelfNode.appendChild(document.createTextNode("\n")); + Collection shelfboards = bookshelf.getShelfBoards(); + Iterator iterator_shelfboards = shelfboards.iterator(); + while(iterator_shelfboards.hasNext()) { + ShelfboardEntity shelfboard = iterator_shelfboards.next(); + Element boardNode = document.createElement("board"); + boardNode.setAttribute("id", shelfboard.getId().toString()); + boardNode.setAttribute("title", shelfboard.getTitle()); + shelfNode.appendChild(boardNode); + shelfNode.appendChild(document.createTextNode("\n")); + } + library.appendChild(shelfNode); + library.appendChild(document.createTextNode("\n")); + } + + Collection articles = libraryService.getAllArticles(); + Iterator iterator_articles = articles.iterator(); + while(iterator_articles.hasNext()) { + ArticleEntity article = iterator_articles.next(); + Element articleNode = document.createElement("article"); + articleNode.setAttribute("id", article.getId().toString()); + articleNode.setAttribute("title", article.getTitle()); + + Collection origins = article.getOriginArticles(); + Iterator iterator_origins = origins.iterator(); + while(iterator_origins.hasNext()) { + ArticleEntity origin = iterator_origins.next(); + Element originNode = document.createElement("article"); + originNode.setAttribute("id", origin.getId().toString()); + articleNode.appendChild(originNode); + articleNode.appendChild(document.createTextNode("\n")); + } + + Collection relateds = article.getRelatedArticles(); + Iterator iterator_relateds = relateds.iterator(); + articleNode.appendChild(document.createTextNode("\n")); + while(iterator_relateds.hasNext()) { + ArticleEntity related = iterator_relateds.next(); + Element relatedNode = document.createElement("article"); + relatedNode.setAttribute("id", related.getId().toString()); + articleNode.appendChild(relatedNode); + articleNode.appendChild(document.createTextNode("\n")); + } + library.appendChild(articleNode); + library.appendChild(document.createTextNode("\n")); + } + return library; + } + + private LibraryService getLibraryService() + { + return null; + } +} diff --git a/java-ee/KontorWeb/src/main/java/com/peetz/kontor/data/ExportMedien.java b/java-ee/KontorWeb/src/main/java/com/peetz/kontor/data/ExportMedien.java new file mode 100644 index 0000000..48d0ee4 --- /dev/null +++ b/java-ee/KontorWeb/src/main/java/com/peetz/kontor/data/ExportMedien.java @@ -0,0 +1,75 @@ +package com.peetz.kontor.data; + +import java.util.Collection; +import java.util.Iterator; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; + +import com.peetz.medien.entity.AudioCDEntity; +import com.peetz.medien.entity.BoxSetEntity; +import com.peetz.medien.entity.FilmEntity; +import com.peetz.medien.service.MedienService; + +public class ExportMedien +{ + public Element backupMedien(Document document) + { + Element medien = document.createElement("medien"); + medien.appendChild(document.createTextNode("\n")); + + MedienService medienService = getMedienService(); + + Collection cds = medienService.getAllCDs(); + Iterator iterator_cds = cds.iterator(); + while(iterator_cds.hasNext()) { + AudioCDEntity cd = iterator_cds.next(); + Element cdNode = document.createElement("audioCD"); + //cdNode.setAttribute("id", cd.getId()); + //cdNode.setAttribute("album", cd.getAlbum()); + //cdNode.setAttribute("artist", cd.getArtist()); + medien.appendChild(cdNode); + medien.appendChild(document.createTextNode("\n")); + } + + Collection films = medienService.getAllDVDs(); + Iterator iterator_films = films.iterator(); + while(iterator_films.hasNext()) { + FilmEntity film = iterator_films.next(); + Element filmNode = document.createElement("film"); + //filmNode.setAttribute("id", film.getId()); + //filmNode.setAttribute("title", film.getTitle()); + medien.appendChild(filmNode); + medien.appendChild(document.createTextNode("\n")); + } + + Collection boxsets = medienService.getAllBoxSets(); + Iterator iterator_boxsets = boxsets.iterator(); + while(iterator_boxsets.hasNext()) { + BoxSetEntity boxSet = iterator_boxsets.next(); + Element boxNode = document.createElement("boxSet"); + boxNode.setAttribute("id", boxSet.getId().toString()); + boxNode.setAttribute("title", boxSet.getTitle()); + films = boxSet.getFilms(); + iterator_films = films.iterator(); + if (iterator_films.hasNext()) { + boxNode.appendChild(document.createTextNode("\n")); + } + while(iterator_films.hasNext()) { + FilmEntity film = iterator_films.next(); + Element filmNode = document.createElement("film"); + //filmNode.setAttribute("id", film.getId()); + boxNode.appendChild(filmNode); + boxNode.appendChild(document.createTextNode("\n")); + } + medien.appendChild(boxNode); + medien.appendChild(document.createTextNode("\n")); + } + return medien; + } + + private MedienService getMedienService() + { + return null; + } +} diff --git a/java-ee/KontorWeb/src/main/java/com/peetz/kontor/data/ExportTradingCards.java b/java-ee/KontorWeb/src/main/java/com/peetz/kontor/data/ExportTradingCards.java new file mode 100644 index 0000000..f17e424 --- /dev/null +++ b/java-ee/KontorWeb/src/main/java/com/peetz/kontor/data/ExportTradingCards.java @@ -0,0 +1,175 @@ +package com.peetz.kontor.data; + +import java.util.Collection; +import java.util.Iterator; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; + +import com.peetz.tradingcards.entity.BaseSetEntity; +import com.peetz.tradingcards.entity.InsertEntity; +import com.peetz.tradingcards.entity.ManufacturerEntity; +import com.peetz.tradingcards.entity.ParallelSetEntity; +import com.peetz.tradingcards.entity.PositionEntity; +import com.peetz.tradingcards.entity.SportCardEntity; +import com.peetz.tradingcards.entity.SportEntity; +import com.peetz.tradingcards.entity.TeamEntity; +import com.peetz.tradingcards.service.SportService; +import com.peetz.tradingcards.service.TradingcardService; + +public class ExportTradingCards +{ + public Element backupTradingCards(Document document) + { + Element tradingcards = document.createElement("tradingcards"); + tradingcards.appendChild(document.createTextNode("\n")); + + SportService sportService = getSportService(); + backupSports(sportService, document, tradingcards); + + backupCards(document, tradingcards); + + return tradingcards; + } + + private void backupSports(SportService sportService, Document document, Element tradingcards) + { + Collection sports = sportService.getAllSports(); + Iterator iterator_sports = sports.iterator(); + while(iterator_sports.hasNext()) { + SportEntity sport = iterator_sports.next(); + Element sportNode = document.createElement("sport"); + sportNode.setAttribute("id", sport.getId().toString()); + sportNode.setAttribute("name", sport.getName()); + + Collection teams = sportService.getTeams(sport); + backupTeams(teams, document, sportNode); + + Collection positions = sportService.getPositions(sport); + backupPositions(positions, document, sportNode); + + tradingcards.appendChild(sportNode); + tradingcards.appendChild(document.createTextNode("\n")); + } + } + + private void backupTeams(Collection teams, Document document, Element sportNode) + { + Iterator iterator_teams = teams.iterator(); + while(iterator_teams.hasNext()) { + TeamEntity team = iterator_teams.next(); + Element teamNode = document.createElement("team"); + teamNode.setAttribute("id", team.getId().toString()); + teamNode.setAttribute("name", team.getName()); + //TODO what happens with null attributes? + //teamNode.setAttribute("short", teamView.getShortname()); + sportNode.appendChild(teamNode); + } + } + + private void backupPositions(Collection positions, Document document, Element sportNode) + { + Iterator iterator_positions = positions.iterator(); + while(iterator_positions.hasNext()) { + PositionEntity position = iterator_positions.next(); + Element positionNode = document.createElement("position"); + positionNode.setAttribute("id", position.getId().toString()); + positionNode.setAttribute("name", position.getName()); + positionNode.setAttribute("short", position.getShortName()); + sportNode.appendChild(positionNode); + } + sportNode.appendChild(document.createTextNode("\n")); + } + + private void backupCards(Document document, Element tradingcards) + { + Collection manufacturers = getTradingcardService().getAllManufacturers(); + Iterator iterator_manufacturers = manufacturers.iterator(); + while(iterator_manufacturers.hasNext()) { + ManufacturerEntity manufacturer = iterator_manufacturers.next(); + Element manufacturerNode = document.createElement("manufacturer"); + manufacturerNode.setAttribute("id", manufacturer.getId().toString()); + manufacturerNode.setAttribute("name", manufacturer.getName()); + Collection baseSets = getTradingcardService().getBaseSetsByManufacturer(manufacturer); + backupBaseSets(baseSets, document, manufacturerNode); + Collection parallelSets = getTradingcardService().getParallelSetsByManufacturer(manufacturer); + backupParallelSets(parallelSets, document, manufacturerNode); + Collection inserts = getTradingcardService().getInsertsByManufacturer(manufacturer); + backupInserts(inserts, document, manufacturerNode); + manufacturerNode.appendChild(document.createTextNode("\n")); + tradingcards.appendChild(manufacturerNode); + tradingcards.appendChild(document.createTextNode("\n")); + } + + Collection sportCards = getTradingcardService().getAllSportCards(); + Iterator iterator_sportCards = sportCards.iterator(); + while(iterator_sportCards.hasNext()) { + SportCardEntity sportCard = iterator_sportCards.next(); + Element cardNode = document.createElement("sportCard"); + cardNode.setAttribute("id", sportCard.getId().toString()); + cardNode.setAttribute("player", sportCard.getPlayer().getId().toString()); + cardNode.setAttribute("baseSet", sportCard.getBaseSet().getId().toString()); + if (sportCard.getParallelSet().getId() != null) + { + cardNode.setAttribute("parallelSet", sportCard.getParallelSet().getId().toString()); + } + if (sportCard.getInsert().getId() != null) + { + cardNode.setAttribute("insert", sportCard.getInsert().getId().toString()); + } + tradingcards.appendChild(cardNode); + tradingcards.appendChild(document.createTextNode("\n")); + } + } + + private void backupBaseSets(Collection baseSets, Document document, Element manufacturerNode) + { + Iterator iterator_baseSets= baseSets.iterator(); + while(iterator_baseSets.hasNext()) { + BaseSetEntity baseSet = iterator_baseSets.next(); + manufacturerNode.appendChild(document.createTextNode("\n")); + Element baseSetNode = document.createElement("baseSet"); + baseSetNode.setAttribute("id", baseSet.getId().toString()); + baseSetNode.setAttribute("name", baseSet.getName()); + manufacturerNode.appendChild(baseSetNode); + } + } + + private void backupParallelSets(Collection parallelSets, Document document, Element manufacturerNode) + { + Iterator iterator_parallelSets = parallelSets.iterator(); + while(iterator_parallelSets.hasNext()) { + ParallelSetEntity parallelSet = iterator_parallelSets.next(); + manufacturerNode.appendChild(document.createTextNode("\n")); + Element parallelSetNode = document.createElement("parallelSet"); + parallelSetNode.setAttribute("id", parallelSet.getId().toString()); + parallelSetNode.setAttribute("name", parallelSet.getName()); + parallelSetNode.setAttribute("baseSet", parallelSet.getBaseSet().getId().toString()); + manufacturerNode.appendChild(parallelSetNode); + } + } + + private void backupInserts(Collection inserts, Document document, Element manufacturerNode) + { + Iterator iterator_inserts = inserts.iterator(); + while(iterator_inserts.hasNext()) { + InsertEntity insert = iterator_inserts.next(); + manufacturerNode.appendChild(document.createTextNode("\n")); + Element insertNode = document.createElement("insert"); + insertNode.setAttribute("id", insert.getId().toString()); + insertNode.setAttribute("name", insert.getName()); + insertNode.setAttribute("baseSet", insert.getBaseSet().getId().toString()); + manufacturerNode.appendChild(insertNode); + } + } + + private SportService getSportService() + { + return null; + } + + private TradingcardService getTradingcardService() + { + return null; + } +} diff --git a/java-ee/KontorWeb/src/main/java/com/peetz/kontor/data/FileExport.java b/java-ee/KontorWeb/src/main/java/com/peetz/kontor/data/FileExport.java new file mode 100644 index 0000000..fb1848f --- /dev/null +++ b/java-ee/KontorWeb/src/main/java/com/peetz/kontor/data/FileExport.java @@ -0,0 +1,64 @@ +package com.peetz.kontor.data; + +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.FactoryConfigurationError; +import javax.xml.parsers.ParserConfigurationException; +import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerConfigurationException; +import javax.xml.transform.TransformerException; +import javax.xml.transform.TransformerFactory; +import javax.xml.transform.TransformerFactoryConfigurationError; +import javax.xml.transform.dom.DOMSource; +import javax.xml.transform.stream.StreamResult; + +import org.w3c.dom.DOMException; +import org.w3c.dom.Document; +import org.w3c.dom.Element; + +public class FileExport +{ + public void exportFile(java.io.PrintWriter out) + { + try { + DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); + DocumentBuilder builder = factory.newDocumentBuilder(); + Document document = builder.newDocument(); + ExportComics exportComics = new ExportComics(); + ExportMedien exportMedien = new ExportMedien(); + ExportLibrary exportLibrary = new ExportLibrary(); + ExportTradingCards exportTradingCards = new ExportTradingCards(); + + Element root = document.createElement("kontor"); + document.appendChild(root); + root.appendChild(document.createTextNode("\n")); + root.appendChild(exportComics.backupComics(document)); + root.appendChild(document.createTextNode("\n")); + root.appendChild(exportMedien.backupMedien(document)); + root.appendChild(document.createTextNode("\n")); + root.appendChild(exportLibrary.backupLibrary(document)); + root.appendChild(document.createTextNode("\n")); + root.appendChild(exportTradingCards.backupTradingCards(document)); + root.appendChild(document.createTextNode("\n")); + + TransformerFactory tFactory = TransformerFactory.newInstance(); + Transformer transformer = tFactory.newTransformer(); + + DOMSource source = new DOMSource(document); + StreamResult result = new StreamResult(out); + transformer.transform(source, result); + } catch (DOMException e) { + System.out.println(e.getMessage()); + } catch (TransformerConfigurationException e) { + System.out.println(e.getMessage()); + } catch (FactoryConfigurationError e) { + System.out.println(e.getMessage()); + } catch (ParserConfigurationException e) { + System.out.println(e.getMessage()); + } catch (TransformerFactoryConfigurationError e) { + System.out.println(e.getMessage()); + } catch (TransformerException e) { + System.out.println(e.getMessage()); + } + } +} diff --git a/java-ee/KontorWeb/src/main/java/com/peetz/kontor/data/FileImport.java b/java-ee/KontorWeb/src/main/java/com/peetz/kontor/data/FileImport.java new file mode 100644 index 0000000..7b03dee --- /dev/null +++ b/java-ee/KontorWeb/src/main/java/com/peetz/kontor/data/FileImport.java @@ -0,0 +1,72 @@ +package com.peetz.kontor.data; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.IOException; + +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.FactoryConfigurationError; +import javax.xml.parsers.ParserConfigurationException; + +import org.w3c.dom.Document; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; +import org.xml.sax.SAXException; + +public class FileImport +{ + public void importFile(File file) + { + try { + DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); + DocumentBuilder builder = factory.newDocumentBuilder(); + Document document = builder.parse(file); + + Node xmlNode = document.getFirstChild(); + if (!xmlNode.getNodeName().equals("kontor")) return; + NodeList nodeList = xmlNode.getChildNodes(); + for (int i=0; i songs = new ArrayList(); + + System.out.println("AudioCD: " + id + ", " + album + "/" + artist); + AudioCDEntity audioCD = getMedienService().addCD(album); + audioCD.setArtist(artist); + audioCD.setCategory(category); + audioCD.setReleaseYear(year); + audioCD.setWantList(wantList); + audioCD.getSongs().addAll(songs); + getMedienService().saveCD(audioCD); + } + + public void parseFilm(Node node) + { + NamedNodeMap attr = node.getAttributes(); + Node idNode = attr.getNamedItem("id"); + String id = idNode.getNodeValue(); + + Node titleNode = attr.getNamedItem("title"); + String title = titleNode.getNodeValue(); + + System.out.println("DVD: " + id + ", " + title); + MedienService service = getMedienService(); + + service.addDVD(title); + } + + public void parseBoxSet(Node node) + { + NamedNodeMap attr = node.getAttributes(); + Node idNode = attr.getNamedItem("id"); + String id = idNode.getNodeValue(); + + Node titleNode = attr.getNamedItem("title"); + String title = titleNode.getNodeValue(); + + System.out.println("BoxSet: " + id + ", " + title); + MedienService service = getMedienService(); + + service.addBoxSet(title); + } + + private MedienService getMedienService() + { + return null; + } +} diff --git a/java-ee/KontorWeb/src/main/java/com/peetz/kontor/data/ImportTradingCards.java b/java-ee/KontorWeb/src/main/java/com/peetz/kontor/data/ImportTradingCards.java new file mode 100644 index 0000000..79c4e23 --- /dev/null +++ b/java-ee/KontorWeb/src/main/java/com/peetz/kontor/data/ImportTradingCards.java @@ -0,0 +1,52 @@ +package com.peetz.kontor.data; + +import org.w3c.dom.NamedNodeMap; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; + +import com.peetz.tradingcards.service.SportService; +import com.peetz.tradingcards.service.TradingcardService; + +public class ImportTradingCards +{ + public void parseNode(Node xmlNode) + { + NodeList childNodes = xmlNode.getChildNodes(); + for (int i=0; i + + + + org.eclipse.persistence.jpa.PersistenceProvider + jdbc/kontor + + + com.peetz.kontor.entity.KontorUserEntity + + com.peetz.comics.entity.ArtistEntity + com.peetz.comics.entity.ComicEntity + com.peetz.comics.entity.IssueEntity + com.peetz.comics.entity.PublisherEntity + com.peetz.comics.entity.StoryArcEntity + com.peetz.comics.entity.VolumeEntity + + com.peetz.library.entity.ArticleEntity + com.peetz.library.entity.BookEntity + com.peetz.library.entity.BookshelfEntity + com.peetz.library.entity.FileEntity + com.peetz.library.entity.MagazineEntity + com.peetz.library.entity.ShelfObjectEntity + com.peetz.library.entity.ShelfboardEntity + + com.peetz.medien.entity.AudioCDEntity + com.peetz.medien.entity.BoxSetEntity + com.peetz.medien.entity.FilmEntity + + com.peetz.tradingcards.entity.BaseSetEntity + com.peetz.tradingcards.entity.InsertEntity + com.peetz.tradingcards.entity.ManufacturerEntity + com.peetz.tradingcards.entity.ParallelSetEntity + com.peetz.tradingcards.entity.PlayerEntity + com.peetz.tradingcards.entity.PositionEntity + com.peetz.tradingcards.entity.SportCardEntity + com.peetz.tradingcards.entity.SportEntity + com.peetz.tradingcards.entity.TeamEntity + + + + + + diff --git a/java-ee/KontorWeb/src/main/webapp/WEB-INF/faces-config.xml b/java-ee/KontorWeb/src/main/webapp/WEB-INF/faces-config.xml new file mode 100644 index 0000000..77df4e5 --- /dev/null +++ b/java-ee/KontorWeb/src/main/webapp/WEB-INF/faces-config.xml @@ -0,0 +1,77 @@ + + + + + kontor + /index.xhtml + + + comics + /comics.xhtml + + + library + /library.xhtml + + + medien + /medien.xhtml + + + tradingcards + /tradingcards.xhtml + + + sport + /sport.xhtml + + + sportAdd + /sport/sportAdd.xhtml + + + + /sport/sportAdd.xhtml + + addSport + /sport/sportDetails.xhtml + + + saveSport + /sport/sportDetails.xhtml + + + + now + java.util.Date + request + + + comicView + com.peetz.comics.view.ComicView + request + + + libraryView + com.peetz.library.view.LibraryView + request + + + medienView + com.peetz.medien.view.MedienView + request + + + tradingCardsView + com.peetz.tradingcards.view.TradingCardsView + request + + + sportView + com.peetz.tradingcards.view.SportView + request + + diff --git a/java-ee/KontorWeb/src/main/webapp/WEB-INF/glassfish-web.xml b/java-ee/KontorWeb/src/main/webapp/WEB-INF/glassfish-web.xml new file mode 100644 index 0000000..c95df12 --- /dev/null +++ b/java-ee/KontorWeb/src/main/webapp/WEB-INF/glassfish-web.xml @@ -0,0 +1,7 @@ + + + + /kontor + + + diff --git a/java-ee/KontorWeb/src/main/webapp/WEB-INF/web.xml b/java-ee/KontorWeb/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000..112c02f --- /dev/null +++ b/java-ee/KontorWeb/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,22 @@ + + + + javax.faces.PROJECT_STAGE + Development + + + Faces Servlet + javax.faces.webapp.FacesServlet + 1 + + + Faces Servlet + /faces/* + + + 30 + + + faces/index.xhtml + + diff --git a/java-ee/KontorWeb/src/main/webapp/comics.xhtml b/java-ee/KontorWeb/src/main/webapp/comics.xhtml new file mode 100644 index 0000000..15d340f --- /dev/null +++ b/java-ee/KontorWeb/src/main/webapp/comics.xhtml @@ -0,0 +1,39 @@ + + + + + + + + Kontor Application + + +
Comics Application
+
+
+ Kontor

+ Comics

+ Library

+ Medien

+ Trading Cards

+
+
+ +
+ + + + + + + + +
+
+
+
Ingenieurbüro Thomas Peetz
+ +
+ diff --git a/java-ee/KontorWeb/src/main/webapp/css/store.css b/java-ee/KontorWeb/src/main/webapp/css/store.css new file mode 100755 index 0000000..de05f30 --- /dev/null +++ b/java-ee/KontorWeb/src/main/webapp/css/store.css @@ -0,0 +1,145 @@ +.spring { + border: thin solid black; + + font-size:10px; + font-family:Arial; + font-weight:normal; + background-color: #ABE7FA; + + } +.myButton { + -moz-box-shadow: 0px 10px 14px -7px #276873; + -webkit-box-shadow: 0px 10px 14px -7px #276873; + box-shadow: 0px 10px 14px -7px #276873; + background:-webkit-gradient(linear, left top, left bottom, color-stop(0.05, #599bb3), color-stop(1, #408c99)); + background:-moz-linear-gradient(top, #599bb3 5%, #408c99 100%); + background:-webkit-linear-gradient(top, #599bb3 5%, #408c99 100%); + background:-o-linear-gradient(top, #599bb3 5%, #408c99 100%); + background:-ms-linear-gradient(top, #599bb3 5%, #408c99 100%); + background:linear-gradient(to bottom, #599bb3 5%, #408c99 100%); + filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#599bb3', endColorstr='#408c99',GradientType=0); + background-color:#599bb3; + -moz-border-radius:8px; + -webkit-border-radius:8px; + border-radius:8px; + display:inline-block; + cursor:pointer; + color:#ffffff; + font-family:Arial; + font-size:12px; + font-weight:bold; + padding:7px 15px; + text-decoration:none; + text-shadow:0px 1px 0px #3d768a; +} +.myButton:hover { + background:-webkit-gradient(linear, left top, left bottom, color-stop(0.05, #408c99), color-stop(1, #599bb3)); + background:-moz-linear-gradient(top, #408c99 5%, #599bb3 100%); + background:-webkit-linear-gradient(top, #408c99 5%, #599bb3 100%); + background:-o-linear-gradient(top, #408c99 5%, #599bb3 100%); + background:-ms-linear-gradient(top, #408c99 5%, #599bb3 100%); + background:linear-gradient(to bottom, #408c99 5%, #599bb3 100%); + filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#408c99', endColorstr='#599bb3',GradientType=0); + background-color:#408c99; +} +.myButton:active { + position:relative; + top:1px; +} + + + .tablestyle { + margin:0px;padding:0px; + width:50%; + box-shadow: 10px 10px 5px #888888; + border:1px solid #000000; + + -moz-border-radius-bottomleft:0px; + -webkit-border-bottom-left-radius:0px; + border-bottom-left-radius:0px; + + -moz-border-radius-bottomright:0px; + -webkit-border-bottom-right-radius:0px; + border-bottom-right-radius:0px; + + -moz-border-radius-topright:0px; + -webkit-border-top-right-radius:0px; + border-top-right-radius:0px; + + -moz-border-radius-topleft:0px; + -webkit-border-top-left-radius:0px; + border-top-left-radius:0px; +}.tablestyle table{ + border-collapse: collapse; + border-spacing: 0; + width:100%; + height:100%; + margin:0px;padding:0px; +}.tablestyle tr:last-child td:last-child { + -moz-border-radius-bottomright:0px; + -webkit-border-bottom-right-radius:0px; + border-bottom-right-radius:0px; +} +.tablestyle table tr:first-child td:first-child { + -moz-border-radius-topleft:0px; + -webkit-border-top-left-radius:0px; + border-top-left-radius:0px; +} +.tablestyle table tr:first-child td:last-child { + -moz-border-radius-topright:0px; + -webkit-border-top-right-radius:0px; + border-top-right-radius:0px; +}.tablestyle tr:last-child td:first-child{ + -moz-border-radius-bottomleft:0px; + -webkit-border-bottom-left-radius:0px; + border-bottom-left-radius:0px; +}.tablestyle tr:hover td{ + +} +.tablestyle tr:nth-child(odd){ background-color:#aad4ff; } +.tablestyle tr:nth-child(even) { background-color:#ffffff; }.tablestyle td{ + vertical-align:middle; + + + border:1px solid #000000; + border-width:0px 1px 1px 0px; + text-align:left; + padding:7px; + font-size:10px; + font-family:Arial; + font-weight:normal; + color:#000000; +}.tablestyle tr:last-child td{ + border-width:0px 1px 0px 0px; +}.tablestyle tr td:last-child{ + border-width:0px 0px 1px 0px; +}.tablestyle tr:last-child td:last-child{ + border-width:0px 0px 0px 0px; +} +.tablestyle tr:first-child td{ + background:-o-linear-gradient(bottom, #005fbf 5%, #003f7f 100%); background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #005fbf), color-stop(1, #003f7f) ); + background:-moz-linear-gradient( center top, #005fbf 5%, #003f7f 100% ); + filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#005fbf", endColorstr="#003f7f"); background: -o-linear-gradient(top,#005fbf,003f7f); + + background-color:#005fbf; + border:0px solid #000000; + text-align:center; + border-width:0px 0px 1px 1px; + font-size:14px; + font-family:Arial; + font-weight:bold; + color:#ffffff; +} +.tablestyle tr:first-child:hover td{ + background:-o-linear-gradient(bottom, #005fbf 5%, #003f7f 100%); background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #005fbf), color-stop(1, #003f7f) ); + background:-moz-linear-gradient( center top, #005fbf 5%, #003f7f 100% ); + filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#005fbf", endColorstr="#003f7f"); background: -o-linear-gradient(top,#005fbf,003f7f); + + background-color:#005fbf; +} +.tablestyle tr:first-child td:first-child{ + border-width:0px 0px 1px 0px; +} +.tablestyle tr:first-child td:last-child{ + border-width:0px 0px 1px 1px; +} diff --git a/java-ee/KontorWeb/src/main/webapp/index.xhtml b/java-ee/KontorWeb/src/main/webapp/index.xhtml new file mode 100755 index 0000000..870d904 --- /dev/null +++ b/java-ee/KontorWeb/src/main/webapp/index.xhtml @@ -0,0 +1,48 @@ + + + + + + + + + + +
+ + + + + + + + + + + + +
+ + +
+ + + + Key + + + + Value + + + +
+
+ diff --git a/java-ee/KontorWeb/src/main/webapp/kontorTemplate.xhtml b/java-ee/KontorWeb/src/main/webapp/kontorTemplate.xhtml new file mode 100644 index 0000000..90a8e65 --- /dev/null +++ b/java-ee/KontorWeb/src/main/webapp/kontorTemplate.xhtml @@ -0,0 +1,44 @@ + + + + + + + + + Kontor Application + + + + +
+ Top +
+
+
+ + Kontor

+ Comics

+ Library

+ Medien + Trading Cards

+
+
+
+ +
+ Content +
+
+
+
+ Ingenieurbüro Thomas Peetz +
+ +
+ + diff --git a/java-ee/KontorWeb/src/main/webapp/library.xhtml b/java-ee/KontorWeb/src/main/webapp/library.xhtml new file mode 100644 index 0000000..ffeac85 --- /dev/null +++ b/java-ee/KontorWeb/src/main/webapp/library.xhtml @@ -0,0 +1,39 @@ + + + + + + + + Kontor Application + + +
Library Application
+
+
+ Kontor

+ Comics

+ Library

+ Medien

+ Trading Cards

+
+
+ +
+ + + + + + + + +
+
+
+
Ingenieurbüro Thomas Peetz
+ +
+ diff --git a/java-ee/KontorWeb/src/main/webapp/medien.xhtml b/java-ee/KontorWeb/src/main/webapp/medien.xhtml new file mode 100644 index 0000000..b77bd49 --- /dev/null +++ b/java-ee/KontorWeb/src/main/webapp/medien.xhtml @@ -0,0 +1,39 @@ + + + + + + + + Kontor Application + + +
Medien Application
+
+
+ Kontor

+ Comics

+ Library

+ Medien

+ Trading Cards

+
+
+ +
+ + + + + + + + +
+
+
+
Ingenieurbüro Thomas Peetz
+ +
+ diff --git a/java-ee/KontorWeb/src/main/webapp/resources/css/cssLayout.css b/java-ee/KontorWeb/src/main/webapp/resources/css/cssLayout.css new file mode 100644 index 0000000..b2f98ff --- /dev/null +++ b/java-ee/KontorWeb/src/main/webapp/resources/css/cssLayout.css @@ -0,0 +1,71 @@ + +#top { + position: relative; + background-color: lightgrey; + text-align: center; + width: 100%; + height: 30px; + color: white; + padding: 5px; + //margin: 0px 0px 10px 0px; +} + +#bottom { + position: relative; + background-color: lightgrey; + width: 100%; + height: 30px; + padding: 5px; + //margin: 10px 0px 0px 0px; +} + +#left { + float: left; + background-color: tan; + padding: 5px; + width: 150px; + height: 50%; +} + +#right { + float: right; + background-color: tan; + //padding: 5px; + width: 150px; + height: 50%; +} + +.center_content { + position: relative; + background-color: wheat; + padding: 5px; + height: 50%; +} + +.left_content { + background-color: tan; + padding: 5px; + margin-left: 170px; + height: 50%; +} + +.right_content { + background-color: wheat; + padding: 5px; + //margin: 0px 170px 0px 170px; + height: 50%; +} + +#top a:link, #top a:visited { + color: white; + font-weight : bold; + text-decoration: none; +} + +#top a:link:hover, #top a:visited:hover { + color: black; + font-weight : bold; + text-decoration : underline; +} + + diff --git a/java-ee/KontorWeb/src/main/webapp/resources/css/default.css b/java-ee/KontorWeb/src/main/webapp/resources/css/default.css new file mode 100644 index 0000000..6cbc3d1 --- /dev/null +++ b/java-ee/KontorWeb/src/main/webapp/resources/css/default.css @@ -0,0 +1,29 @@ +body { + background-color: #ffffff; + font-size: 12px; + font-family: Verdana, "Verdana CE", Arial, "Arial CE", "Lucida Grande CE", lucida, "Helvetica CE", sans-serif; + color: #000000; + margin: 10px; +} + +h1 { + font-family: Arial, "Arial CE", "Lucida Grande CE", lucida, "Helvetica CE", sans-serif; + border-bottom: 1px solid #AFAFAF; + font-size: 16px; + font-weight: bold; + margin: 0px; + padding: 0px; + color: #D20005; +} + +a:link, a:visited { + color: #045491; + font-weight : bold; + text-decoration: none; +} + +a:link:hover, a:visited:hover { + color: #045491; + font-weight : bold; + text-decoration : underline; +} diff --git a/java-ee/KontorWeb/src/main/webapp/seite.html b/java-ee/KontorWeb/src/main/webapp/seite.html new file mode 100644 index 0000000..8478fea --- /dev/null +++ b/java-ee/KontorWeb/src/main/webapp/seite.html @@ -0,0 +1,17 @@ + + + + Testseite + + +
+
Testseite
+
+ +
Hauptseite
+
Details
+
+ +
+ + \ No newline at end of file diff --git a/java-ee/KontorWeb/src/main/webapp/sport.xhtml b/java-ee/KontorWeb/src/main/webapp/sport.xhtml new file mode 100644 index 0000000..840a202 --- /dev/null +++ b/java-ee/KontorWeb/src/main/webapp/sport.xhtml @@ -0,0 +1,40 @@ + + + + + + + + Kontor Application + + +
Trading Cards Application
+
+
+ Kontor

+ Comics

+ Library

+ Medien

+ Trading Cards

+ Sport

+
+
+ +
+ + + + + + + + +
+
+
+
Ingenieurbüro Thomas Peetz
+ +
+ diff --git a/java-ee/KontorWeb/src/main/webapp/sport/sportAdd.xhtml b/java-ee/KontorWeb/src/main/webapp/sport/sportAdd.xhtml new file mode 100644 index 0000000..ee5ee2d --- /dev/null +++ b/java-ee/KontorWeb/src/main/webapp/sport/sportAdd.xhtml @@ -0,0 +1,39 @@ + + + + + + + + Kontor Application + + +
Trading Cards Application
+
+
+ Kontor

+ Comics

+ Library

+ Medien

+ Trading Cards

+ Sport

+
+
+ +
+ + + + + + + +
+
+
+
Ingenieurbüro Thomas Peetz
+ +
+ diff --git a/java-ee/KontorWeb/src/main/webapp/sport/sportDetails.xhtml b/java-ee/KontorWeb/src/main/webapp/sport/sportDetails.xhtml new file mode 100644 index 0000000..cc6be43 --- /dev/null +++ b/java-ee/KontorWeb/src/main/webapp/sport/sportDetails.xhtml @@ -0,0 +1,39 @@ + + + + + + + + Kontor Application + + +
Trading Cards Application
+
+
+ Kontor

+ Comics

+ Library

+ Medien

+ Trading Cards

+ Sport

+
+
+ +
+ + + + + + + +
+
+
+
Ingenieurbüro Thomas Peetz
+ +
+ diff --git a/java-ee/KontorWeb/src/main/webapp/tradingcards.xhtml b/java-ee/KontorWeb/src/main/webapp/tradingcards.xhtml new file mode 100644 index 0000000..585697e --- /dev/null +++ b/java-ee/KontorWeb/src/main/webapp/tradingcards.xhtml @@ -0,0 +1,40 @@ + + + + + + + + Kontor Application + + +
Trading Cards Application
+
+
+ Kontor

+ Comics

+ Library

+ Medien

+ Trading Cards

+ Sport

+
+
+ +
+ + + + + + + + +
+
+
+
Ingenieurbüro Thomas Peetz
+ +
+ diff --git a/java-ee/LibraryImpl/build.gradle b/java-ee/LibraryImpl/build.gradle new file mode 100644 index 0000000..fa86a7f --- /dev/null +++ b/java-ee/LibraryImpl/build.gradle @@ -0,0 +1,5 @@ +jar { + manifest { + attributes 'Implementation-Title': 'Library', 'Implementation-Version': version + } +} diff --git a/java-ee/LibraryImpl/config/checkstyle/checkstyle.xml b/java-ee/LibraryImpl/config/checkstyle/checkstyle.xml new file mode 100644 index 0000000..7c682c3 --- /dev/null +++ b/java-ee/LibraryImpl/config/checkstyle/checkstyle.xml @@ -0,0 +1,192 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java-ee/LibraryImpl/config/checkstyle/checkstyle.xsl b/java-ee/LibraryImpl/config/checkstyle/checkstyle.xsl new file mode 100644 index 0000000..393a01b --- /dev/null +++ b/java-ee/LibraryImpl/config/checkstyle/checkstyle.xsl @@ -0,0 +1,179 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +

CheckStyle Audit

Designed for use with CheckStyle and Ant.
+
+ + + +
+ + + +
+ + + + + +

+

+ +


+ + + + +
+ + + + +

Files

+ + + + + + + + + + + + + + +
NameErrors
+
+ + + + +

File

+ + + + + + + + + + + + + +
Error DescriptionLine
+ Back to top +
+ + + +

Summary

+ + + + + + + + + + + + +
FilesErrors
+
+ + + + a + b + + +
+ + diff --git a/java-ee/LibraryImpl/config/findbugs/findbugs.xml b/java-ee/LibraryImpl/config/findbugs/findbugs.xml new file mode 100644 index 0000000..34a6e01 --- /dev/null +++ b/java-ee/LibraryImpl/config/findbugs/findbugs.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/java-ee/LibraryImpl/src/main/java/com/peetz/library/dal/ArticleDao.java b/java-ee/LibraryImpl/src/main/java/com/peetz/library/dal/ArticleDao.java new file mode 100644 index 0000000..a62a119 --- /dev/null +++ b/java-ee/LibraryImpl/src/main/java/com/peetz/library/dal/ArticleDao.java @@ -0,0 +1,25 @@ +package com.peetz.library.dal; + +import java.util.List; + +import javax.ejb.Local; + +import com.peetz.library.entity.ArticleEntity; + +@Local +public interface ArticleDao { + public ArticleEntity getById(Long id); + + public List findByIds(List ids); + + public List findByTitle(String title); + + public List getRelatedArticles(ArticleEntity entity); + + public ArticleEntity assign(ArticleEntity origin, ArticleEntity reference); + + public ArticleEntity store(ArticleEntity entity); + + public void delete(ArticleEntity entity); + +} diff --git a/java-ee/LibraryImpl/src/main/java/com/peetz/library/dal/BookDao.java b/java-ee/LibraryImpl/src/main/java/com/peetz/library/dal/BookDao.java new file mode 100644 index 0000000..56f2fea --- /dev/null +++ b/java-ee/LibraryImpl/src/main/java/com/peetz/library/dal/BookDao.java @@ -0,0 +1,15 @@ +package com.peetz.library.dal; + +import java.util.Collection; + +import javax.ejb.Local; + +import com.peetz.library.entity.BookEntity; + +@Local +public interface BookDao { + public BookEntity findById(Long id); + public Collection findByIds(Collection ids); + public BookEntity store(BookEntity entity); + public void delete(BookEntity entity); +} diff --git a/java-ee/LibraryImpl/src/main/java/com/peetz/library/dal/BookshelfDao.java b/java-ee/LibraryImpl/src/main/java/com/peetz/library/dal/BookshelfDao.java new file mode 100644 index 0000000..ddf5b10 --- /dev/null +++ b/java-ee/LibraryImpl/src/main/java/com/peetz/library/dal/BookshelfDao.java @@ -0,0 +1,22 @@ +package com.peetz.library.dal; + +import java.util.List; + +import javax.ejb.Local; + +import com.peetz.library.entity.BookshelfEntity; + + +@Local +public interface BookshelfDao { + public BookshelfEntity getById(Long id); + + public List findByIds(List ids); + + public List findByTitle(String title); + + public BookshelfEntity store(BookshelfEntity entity); + + public void delete(BookshelfEntity entity); + +} diff --git a/java-ee/LibraryImpl/src/main/java/com/peetz/library/dal/FileDao.java b/java-ee/LibraryImpl/src/main/java/com/peetz/library/dal/FileDao.java new file mode 100644 index 0000000..b9e2e31 --- /dev/null +++ b/java-ee/LibraryImpl/src/main/java/com/peetz/library/dal/FileDao.java @@ -0,0 +1,15 @@ +package com.peetz.library.dal; + +import java.util.Collection; + +import javax.ejb.Local; + +import com.peetz.library.entity.FileEntity; + +@Local +public interface FileDao { + public FileEntity findById(Long id); + public Collection findByIds(Collection ids); + public FileEntity store(FileEntity entity); + public void delete(FileEntity entity); +} diff --git a/java-ee/LibraryImpl/src/main/java/com/peetz/library/dal/MagazineDao.java b/java-ee/LibraryImpl/src/main/java/com/peetz/library/dal/MagazineDao.java new file mode 100644 index 0000000..2df143e --- /dev/null +++ b/java-ee/LibraryImpl/src/main/java/com/peetz/library/dal/MagazineDao.java @@ -0,0 +1,15 @@ +package com.peetz.library.dal; + +import java.util.Collection; + +import javax.ejb.Local; + +import com.peetz.library.entity.MagazineEntity; + +@Local +public interface MagazineDao { + public MagazineEntity findById(Long id); + public Collection findByIds(Collection ids); + public MagazineEntity store(MagazineEntity entity); + public void delete(MagazineEntity entity); +} diff --git a/java-ee/LibraryImpl/src/main/java/com/peetz/library/dal/ShelfObjectDao.java b/java-ee/LibraryImpl/src/main/java/com/peetz/library/dal/ShelfObjectDao.java new file mode 100644 index 0000000..2028863 --- /dev/null +++ b/java-ee/LibraryImpl/src/main/java/com/peetz/library/dal/ShelfObjectDao.java @@ -0,0 +1,15 @@ +package com.peetz.library.dal; + +import java.util.Collection; + +import javax.ejb.Local; + +import com.peetz.library.entity.ShelfObjectEntity; + +@Local +public interface ShelfObjectDao { + public ShelfObjectEntity getById(Long id); + public Collection getByIds(Collection ids); + public ShelfObjectEntity store(ShelfObjectEntity entity); + public void delete(ShelfObjectEntity entity); +} diff --git a/java-ee/LibraryImpl/src/main/java/com/peetz/library/dal/ShelfboardDao.java b/java-ee/LibraryImpl/src/main/java/com/peetz/library/dal/ShelfboardDao.java new file mode 100644 index 0000000..ce326a7 --- /dev/null +++ b/java-ee/LibraryImpl/src/main/java/com/peetz/library/dal/ShelfboardDao.java @@ -0,0 +1,15 @@ +package com.peetz.library.dal; + +import java.util.Collection; + +import javax.ejb.Local; + +import com.peetz.library.entity.ShelfboardEntity; + +@Local +public interface ShelfboardDao { + public ShelfboardEntity getById(Long id); + public Collection getByIds(Collection ids); + public ShelfboardEntity store(ShelfboardEntity entity); + public void delete(ShelfboardEntity entity); +} diff --git a/java-ee/LibraryImpl/src/main/java/com/peetz/library/dal/package-info.java b/java-ee/LibraryImpl/src/main/java/com/peetz/library/dal/package-info.java new file mode 100644 index 0000000..2c24b31 --- /dev/null +++ b/java-ee/LibraryImpl/src/main/java/com/peetz/library/dal/package-info.java @@ -0,0 +1,8 @@ +/** + * + */ +/** + * @author TPEETZ + * + */ +package com.peetz.library.dal; \ No newline at end of file diff --git a/java-ee/LibraryImpl/src/main/java/com/peetz/library/entity/ArticleEntity.java b/java-ee/LibraryImpl/src/main/java/com/peetz/library/entity/ArticleEntity.java new file mode 100644 index 0000000..0348e2b --- /dev/null +++ b/java-ee/LibraryImpl/src/main/java/com/peetz/library/entity/ArticleEntity.java @@ -0,0 +1,87 @@ +package com.peetz.library.entity; + +import java.util.ArrayList; +import java.util.Collection; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.ManyToMany; +import javax.persistence.ManyToOne; +import javax.persistence.NamedQueries; +import javax.persistence.NamedQuery; +import javax.persistence.Table; + +@NamedQueries({ + @NamedQuery(name="Article.findAll", query="SELECT a from ArticleEntity as a") +}) + +@Entity +@Table(name="ARTICLE") +public class ArticleEntity { + private Long id; + + private String title; + + private Collection relatedArticles = new ArrayList(); + + private Collection originArticles = new ArrayList(); + + private FileEntity file; + + private MagazineEntity magazine; + + @Id + @GeneratedValue(strategy=GenerationType.AUTO) + public Long getId() { return id; } + + @SuppressWarnings("unused") + private void setId(Long id) { this.id = id; } + + @Column + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + @ManyToMany + public Collection getRelatedArticles() { + return relatedArticles; + } + + public void setRelatedArticles(Collection relatedArticles) { + this.relatedArticles = relatedArticles; + } + + @ManyToMany + public Collection getOriginArticles() { + return originArticles; + } + + public void setOriginArticles(Collection originArticles) { + this.originArticles = originArticles; + } + + @ManyToOne + public FileEntity getFile() { + return file; + } + + public void setFile(FileEntity file) { + this.file = file; + } + + @ManyToOne + public MagazineEntity getMagazine() { + return magazine; + } + + public void setMagazine(MagazineEntity magazine) { + this.magazine = magazine; + } +} diff --git a/java-ee/LibraryImpl/src/main/java/com/peetz/library/entity/BookEntity.java b/java-ee/LibraryImpl/src/main/java/com/peetz/library/entity/BookEntity.java new file mode 100644 index 0000000..1f86ba0 --- /dev/null +++ b/java-ee/LibraryImpl/src/main/java/com/peetz/library/entity/BookEntity.java @@ -0,0 +1,93 @@ +package com.peetz.library.entity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.NamedQueries; +import javax.persistence.NamedQuery; +import javax.persistence.Table; + +@NamedQueries({ + @NamedQuery(name="Book.findAll", query="SELECT a from BookEntity as a") +}) + +@Entity +@Table(name="BOOK") +public class BookEntity { + private Long id; + + private String title; + + private String author; + + private String publisher; + + private String isbn; + + private Long page; + + private String edition; + + @Id + @GeneratedValue(strategy=GenerationType.AUTO) + public Long getId() { return id; } + + @SuppressWarnings("unused") + private void setId(Long id) { this.id = id; } + + @Column + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + @Column + public String getAuthor() { + return author; + } + + public void setAuthor(String author) { + this.author = author; + } + + @Column + public String getPublisher() { + return publisher; + } + + public void setPublisher(String publisher) { + this.publisher = publisher; + } + + @Column + public String getIsbn() { + return isbn; + } + + public void setIsbn(String isbn) { + this.isbn = isbn; + } + + @Column + public Long getPage() { + return page; + } + + public void setPage(Long page) { + this.page = page; + } + + @Column + public String getEdition() { + return edition; + } + + public void setEdition(String edition) { + this.edition = edition; + } +} diff --git a/java-ee/LibraryImpl/src/main/java/com/peetz/library/entity/BookshelfEntity.java b/java-ee/LibraryImpl/src/main/java/com/peetz/library/entity/BookshelfEntity.java new file mode 100644 index 0000000..521a9bf --- /dev/null +++ b/java-ee/LibraryImpl/src/main/java/com/peetz/library/entity/BookshelfEntity.java @@ -0,0 +1,53 @@ +package com.peetz.library.entity; + +import java.util.ArrayList; +import java.util.Collection; + +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.NamedQueries; +import javax.persistence.NamedQuery; +import javax.persistence.OneToMany; +import javax.persistence.Table; + +@NamedQueries({ + @NamedQuery(name="Bookshelf.findAll", query="SELECT b from BookshelfEntity as b"), + @NamedQuery(name="Bookshelf.findById", query="SELECT b from BookshelfEntity as b WHERE b.id = :id"), + @NamedQuery(name="Bookshelf.findByTitle", query="SELECT b from BookshelfEntity as b WHERE b.title = :title") +}) + +@Entity +@Table(name="BOOKSHELF") +public class BookshelfEntity { + + private Long id; + + private String title; + + private Collection shelfBoards = new ArrayList(); + + @Id + @GeneratedValue(strategy=GenerationType.AUTO) + public Long getId() { return id; } + + @SuppressWarnings("unused") + private void setId(Long id) { this.id = id; } + + @Column + public String getTitle() { return title; } + + public void setTitle(String title) { this.title = title; } + + @OneToMany(mappedBy="bookshelf", cascade=CascadeType.REMOVE) + public Collection getShelfBoards() { + return shelfBoards; + } + + public void setShelfBoards(Collection shelfBoards) { + this.shelfBoards = shelfBoards; + } +} diff --git a/java-ee/LibraryImpl/src/main/java/com/peetz/library/entity/FileEntity.java b/java-ee/LibraryImpl/src/main/java/com/peetz/library/entity/FileEntity.java new file mode 100644 index 0000000..6f31553 --- /dev/null +++ b/java-ee/LibraryImpl/src/main/java/com/peetz/library/entity/FileEntity.java @@ -0,0 +1,49 @@ +package com.peetz.library.entity; + +import java.util.ArrayList; +import java.util.Collection; + +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.OneToMany; +import javax.persistence.Table; + +@Entity +@Table(name="FILE") +public class FileEntity { + private Long id; + + private String title; + + private Collection articles = new ArrayList(); + + @Id + @GeneratedValue(strategy=GenerationType.AUTO) + public Long getId() { return id; } + + @SuppressWarnings("unused") + private void setId(Long id) { this.id = id; } + + @Column + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + @OneToMany(mappedBy="file", cascade=CascadeType.REMOVE) + public Collection getArticles() { + return articles; + } + + public void setArticles(Collection articles) { + this.articles = articles; + } + +} diff --git a/java-ee/LibraryImpl/src/main/java/com/peetz/library/entity/MagazineEntity.java b/java-ee/LibraryImpl/src/main/java/com/peetz/library/entity/MagazineEntity.java new file mode 100644 index 0000000..6bed864 --- /dev/null +++ b/java-ee/LibraryImpl/src/main/java/com/peetz/library/entity/MagazineEntity.java @@ -0,0 +1,49 @@ +package com.peetz.library.entity; + +import java.util.ArrayList; +import java.util.Collection; + +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.OneToMany; +import javax.persistence.Table; + +@Entity +@Table(name="MAGAZINE") +public class MagazineEntity { + private Long id; + + private String title; + + private Collection articles = new ArrayList(); + + @Id + @GeneratedValue(strategy=GenerationType.AUTO) + public Long getId() { return id; } + + @SuppressWarnings("unused") + private void setId(Long id) { this.id = id; } + + @Column + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + @OneToMany(mappedBy="magazine", cascade=CascadeType.REMOVE) + public Collection getArticles() { + return articles; + } + + public void setArticles(Collection articles) { + this.articles = articles; + } + +} diff --git a/java-ee/LibraryImpl/src/main/java/com/peetz/library/entity/ShelfObjectEntity.java b/java-ee/LibraryImpl/src/main/java/com/peetz/library/entity/ShelfObjectEntity.java new file mode 100644 index 0000000..98a5cd1 --- /dev/null +++ b/java-ee/LibraryImpl/src/main/java/com/peetz/library/entity/ShelfObjectEntity.java @@ -0,0 +1,32 @@ +package com.peetz.library.entity; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.ManyToOne; +import javax.persistence.Table; + +@Entity +@Table(name="SHELFOBJECT") +public class ShelfObjectEntity { + private Long id; + + private ShelfboardEntity shelfboard; + + @Id + @GeneratedValue(strategy=GenerationType.AUTO) + public Long getId() { return id; } + + @SuppressWarnings("unused") + private void setId(Long id) { this.id = id; } + + @ManyToOne + public ShelfboardEntity getShelfboard() { + return shelfboard; + } + + public void setShelfboard(ShelfboardEntity shelfboard) { + this.shelfboard = shelfboard; + } +} diff --git a/java-ee/LibraryImpl/src/main/java/com/peetz/library/entity/ShelfboardEntity.java b/java-ee/LibraryImpl/src/main/java/com/peetz/library/entity/ShelfboardEntity.java new file mode 100644 index 0000000..d6e4edd --- /dev/null +++ b/java-ee/LibraryImpl/src/main/java/com/peetz/library/entity/ShelfboardEntity.java @@ -0,0 +1,57 @@ +package com.peetz.library.entity; + +import java.util.ArrayList; +import java.util.Collection; + +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.ManyToOne; +import javax.persistence.OneToMany; +import javax.persistence.Table; + +@Entity +@Table(name="SHELFBOARD") +public class ShelfboardEntity { + private Long id; + + private String title; + + private BookshelfEntity bookshelf; + + private Collection objects = new ArrayList(); + + @Id + @GeneratedValue(strategy=GenerationType.AUTO) + public Long getId() { return id; } + + @SuppressWarnings("unused") + private void setId(Long id) { this.id = id; } + + @Column + public String getTitle() { return title; } + + public void setTitle(String title) { this.title = title; } + + @ManyToOne + public BookshelfEntity getBookshelf() { + return bookshelf; + } + + public void setBookshelf(BookshelfEntity bookshelf) { + this.bookshelf = bookshelf; + } + + @OneToMany(mappedBy="shelfboard", cascade=CascadeType.REMOVE) + public Collection getObjects() { + return objects; + } + + public void setObjects(Collection objects) { + this.objects = objects; + } + +} diff --git a/java-ee/LibraryImpl/src/main/java/com/peetz/library/entity/package-info.java b/java-ee/LibraryImpl/src/main/java/com/peetz/library/entity/package-info.java new file mode 100644 index 0000000..94536f3 --- /dev/null +++ b/java-ee/LibraryImpl/src/main/java/com/peetz/library/entity/package-info.java @@ -0,0 +1,8 @@ +/** + * + */ +/** + * @author TPEETZ + * + */ +package com.peetz.library.entity; \ No newline at end of file diff --git a/java-ee/LibraryImpl/src/main/java/com/peetz/library/service/LibraryService.java b/java-ee/LibraryImpl/src/main/java/com/peetz/library/service/LibraryService.java new file mode 100644 index 0000000..7ac294f --- /dev/null +++ b/java-ee/LibraryImpl/src/main/java/com/peetz/library/service/LibraryService.java @@ -0,0 +1,28 @@ +package com.peetz.library.service; + +import java.util.Collection; + +import javax.ejb.Local; + +import com.peetz.library.entity.ArticleEntity; +import com.peetz.library.entity.BookEntity; +import com.peetz.library.entity.BookshelfEntity; + +@Local +public interface LibraryService { + + Collection getAllBooks(); + + Collection getAllBookshelfs(); + + Collection getAllArticles(); + + void addBookshelf(String title); + + void addArticle(String title); + + BookEntity addBook(String title); + + void saveBook(BookEntity book); + +} diff --git a/java-ee/LibraryImpl/src/main/java/com/peetz/library/service/LibraryServiceImpl.java b/java-ee/LibraryImpl/src/main/java/com/peetz/library/service/LibraryServiceImpl.java new file mode 100644 index 0000000..62baae8 --- /dev/null +++ b/java-ee/LibraryImpl/src/main/java/com/peetz/library/service/LibraryServiceImpl.java @@ -0,0 +1,64 @@ +package com.peetz.library.service; + +import java.util.Collection; + +import javax.ejb.Stateless; +import javax.ejb.TransactionAttribute; +import javax.ejb.TransactionAttributeType; + +import com.peetz.library.entity.ArticleEntity; +import com.peetz.library.entity.BookEntity; +import com.peetz.library.entity.BookshelfEntity; +import java.util.ArrayList; +import javax.persistence.EntityManager; +import javax.persistence.PersistenceContext; +import javax.persistence.Query; + +@Stateless(name="LibraryService") +@TransactionAttribute(TransactionAttributeType.REQUIRED) +public class LibraryServiceImpl implements LibraryService { + + @PersistenceContext(unitName = "kontor") + private EntityManager em; + + @SuppressWarnings("unchecked") + @Override + public Collection getAllBooks() { + Query query = em.createNamedQuery("Book.findAll"); + ArrayList bookList = new ArrayList(query.getResultList()); + return bookList; + } + + @SuppressWarnings("unchecked") + @Override + public Collection getAllBookshelfs() { + Query query = em.createNamedQuery("Bookshelf.findAll"); + ArrayList bookshelfList = new ArrayList(query.getResultList()); + return bookshelfList; + } + + @SuppressWarnings("unchecked") + @Override + public Collection getAllArticles() { + Query query = em.createNamedQuery("Article.findAll"); + ArrayList articleList = new ArrayList(query.getResultList()); + return articleList; + } + + @Override + public void addBookshelf(String title) { + } + + @Override + public void addArticle(String title) { + } + + @Override + public BookEntity addBook(String title) { + return null; + } + + @Override + public void saveBook(BookEntity book) { + } +} diff --git a/java-ee/LibraryImpl/src/main/java/com/peetz/library/service/package-info.java b/java-ee/LibraryImpl/src/main/java/com/peetz/library/service/package-info.java new file mode 100644 index 0000000..4a56b54 --- /dev/null +++ b/java-ee/LibraryImpl/src/main/java/com/peetz/library/service/package-info.java @@ -0,0 +1,8 @@ +/** + * + */ +/** + * @author TPEETZ + * + */ +package com.peetz.library.service; \ No newline at end of file diff --git a/java-ee/LibraryWeb/build.gradle b/java-ee/LibraryWeb/build.gradle new file mode 100644 index 0000000..9a41aae --- /dev/null +++ b/java-ee/LibraryWeb/build.gradle @@ -0,0 +1,7 @@ +apply plugin: 'war' + +version = '0.0.1' + +dependencies { + compile project(':LibraryImpl') +} diff --git a/java-ee/LibraryWeb/src/main/java/com/peetz/library/view/LibraryView.java b/java-ee/LibraryWeb/src/main/java/com/peetz/library/view/LibraryView.java new file mode 100644 index 0000000..9a566a0 --- /dev/null +++ b/java-ee/LibraryWeb/src/main/java/com/peetz/library/view/LibraryView.java @@ -0,0 +1,42 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ + +package com.peetz.library.view; + +import com.peetz.library.service.LibraryService; +import java.io.Serializable; +import java.util.logging.Logger; +import javax.ejb.EJB; +import javax.faces.bean.ManagedBean; +import javax.faces.bean.RequestScoped; + +/** + * + * @author tpeetz + */ +@ManagedBean(name="LibraryView") +@RequestScoped +public class LibraryView implements Serializable { + + private static final long serialVersionUID = -6251848426914654974L; + + private static final Logger LOG = Logger.getLogger(LibraryView.class.getName()); + + @EJB + private LibraryService libraryService; + + public LibraryView() { + LOG.info("LibraryView created"); + } + + public Integer getBookNumber() { + return libraryService.getAllBooks().size(); + } + + public Integer getArticleNumber() { + return libraryService.getAllArticles().size(); + } +} diff --git a/java-ee/LibraryWeb/src/main/webapp/index.jsp b/java-ee/LibraryWeb/src/main/webapp/index.jsp new file mode 100644 index 0000000..9e061a7 --- /dev/null +++ b/java-ee/LibraryWeb/src/main/webapp/index.jsp @@ -0,0 +1,33 @@ + + Library Application + + + + + + + + + + + + + + + + + + + + + + + +
Library Manager
Kontor +

Library Manager

+ Show the book list +
 
+

Ingenieurbüro Thomas Peetz

+
+ + diff --git a/java-ee/LibraryWeb/src/main/webapp/jsp/articleAdd.jsp b/java-ee/LibraryWeb/src/main/webapp/jsp/articleAdd.jsp new file mode 100644 index 0000000..63f9266 --- /dev/null +++ b/java-ee/LibraryWeb/src/main/webapp/jsp/articleAdd.jsp @@ -0,0 +1,67 @@ +<%@ page language="java"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %> + + + + + + + + Library Application + + + + + + + + + + + + + + + + + + + + + + + + +
Library Manager
+ <% out.println(com.peetz.library.navigation.MenuLinks.getInstance().toString()); %> + + <%-- create a html form --%> + + <%-- print out the form data --%> + + + + + + + +
Title:
+ <%-- set the parameter for the dispatch action --%> + + +
+ <%-- submit and back button --%> + + Back + +   + Save +
+
 
+

Ingenieurbüro Thomas Peetz

+
+ +
diff --git a/java-ee/LibraryWeb/src/main/webapp/jsp/articleEdit.jsp b/java-ee/LibraryWeb/src/main/webapp/jsp/articleEdit.jsp new file mode 100644 index 0000000..d3ae5e5 --- /dev/null +++ b/java-ee/LibraryWeb/src/main/webapp/jsp/articleEdit.jsp @@ -0,0 +1,69 @@ +<%@ page language="java"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %> + + + + + + + + Library Application + + + + + + + + + + + + + + + + + + + + + + + + +
Library Manager
+ <% out.println(com.peetz.library.navigation.MenuLinks.getInstance().toString()); %> + + <%-- create a html form --%> + + <%-- print out the form data --%> + + + + + + + +
Titel:
+ <%-- hidden fields for id and userId --%> + + <%-- set the parameter for the dispatch action --%> + + +
+ <%-- submit and back button --%> + + Back + +   + Save +
+
 
+

Ingenieurbüro Thomas Peetz

+
+ +
diff --git a/java-ee/LibraryWeb/src/main/webapp/jsp/articleList.jsp b/java-ee/LibraryWeb/src/main/webapp/jsp/articleList.jsp new file mode 100644 index 0000000..d8570ba --- /dev/null +++ b/java-ee/LibraryWeb/src/main/webapp/jsp/articleList.jsp @@ -0,0 +1,90 @@ +<%@ page language="java"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %> + + + + + + + + Library Application + + + + + + + + + + + + + + + + + + + + + + + + +
Show article list
+ <% out.println(com.peetz.library.navigation.MenuLinks.getInstance().toString()); %> + + + + <%-- set the header --%> + + + + + + <%-- check if article exists and display message or iterate over articles --%> + + + + + + + + + <%-- print out the article informations --%> + + <%-- print out the edit and delete link for each article --%> + + + + + + <%-- end interate --%> + + <%-- if articles cannot be found display a text --%> + + + + + + + +
Article Title  
No articles available
EditDelete
No articles found.
+
+ <%-- add and back to menu button --%> + Add a new article + +   + Back to menu + + +
 
+

Ingenieurbüro Thomas Peetz

+
+ +
diff --git a/java-ee/LibraryWeb/src/main/webapp/jsp/boardAdd.jsp b/java-ee/LibraryWeb/src/main/webapp/jsp/boardAdd.jsp new file mode 100644 index 0000000..e1bc491 --- /dev/null +++ b/java-ee/LibraryWeb/src/main/webapp/jsp/boardAdd.jsp @@ -0,0 +1,68 @@ +<%@ page language="java"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %> + + + + + + + + Library Application + + + + + + + + + + + + + + + + + + + + + + + + +
Library Manager
+ <% out.println(com.peetz.library.navigation.MenuLinks.getInstance().toString()); %> + + <%-- create a html form --%> + + <%-- print out the form data --%> + + + + + + + + +
Shelf:
Title:
+ <%-- set the parameter for the dispatch action --%> + + +
+ <%-- submit and back button --%> + + Back + +   + Save +
+
 
+

Ingenieurbüro Thomas Peetz

+
+ +
diff --git a/java-ee/LibraryWeb/src/main/webapp/jsp/boardEdit.jsp b/java-ee/LibraryWeb/src/main/webapp/jsp/boardEdit.jsp new file mode 100644 index 0000000..7221317 --- /dev/null +++ b/java-ee/LibraryWeb/src/main/webapp/jsp/boardEdit.jsp @@ -0,0 +1,67 @@ +<%@ page language="java"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %> + + + + + + + + Library Application + + + + + + + + + + + + + + + + + + + + + + + + +
Library Manager
+ <% out.println(com.peetz.library.navigation.MenuLinks.getInstance().toString()); %> + + <%-- create a html form --%> + + <%-- print out the form data --%> + + + + + + + +
Title:
+ <%-- set the parameter for the dispatch action --%> + + +
+ <%-- submit and back button --%> + + Back + +   + Save +
+
 
+

Ingenieurbüro Thomas Peetz

+
+ +
diff --git a/java-ee/LibraryWeb/src/main/webapp/jsp/bookAdd.jsp b/java-ee/LibraryWeb/src/main/webapp/jsp/bookAdd.jsp new file mode 100644 index 0000000..d3fb02b --- /dev/null +++ b/java-ee/LibraryWeb/src/main/webapp/jsp/bookAdd.jsp @@ -0,0 +1,67 @@ +<%@ page language="java"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %> + + + + + + + + Library Application + + + + + + + + + + + + + + + + + + + + + + + + +
Library Manager
+ <% out.println(com.peetz.library.navigation.MenuLinks.getInstance().toString()); %> + + <%-- create a html form --%> + + <%-- print out the form data --%> + + + + + + + +
Title:
+ <%-- set the parameter for the dispatch action --%> + + +
+ <%-- submit and back button --%> + + Back + +   + Save +
+
 
+

Ingenieurbüro Thomas Peetz

+
+ +
diff --git a/java-ee/LibraryWeb/src/main/webapp/jsp/bookEdit.jsp b/java-ee/LibraryWeb/src/main/webapp/jsp/bookEdit.jsp new file mode 100644 index 0000000..8d54239 --- /dev/null +++ b/java-ee/LibraryWeb/src/main/webapp/jsp/bookEdit.jsp @@ -0,0 +1,85 @@ +<%@ page language="java"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %> + + + + + + + + Library Application + + + + + + + + + + + + + + + + + + + + + + + + +
Library Manager
+ <% out.println(com.peetz.library.navigation.MenuLinks.getInstance().toString()); %> + + <%-- create a html form --%> + + <%-- print out the form data --%> + + + + + + + + + + + + + + + + + + + + + + + +
Titel:
Autor:
Verlag:
ISBN:
Seiten:
+ <%-- hidden fields for id and userId --%> + + <%-- set the parameter for the dispatch action --%> + + +
+ <%-- submit and back button --%> + + Back + +   + Save +
+
 
+

Ingenieurbüro Thomas Peetz

+
+ +
diff --git a/java-ee/LibraryWeb/src/main/webapp/jsp/bookList.jsp b/java-ee/LibraryWeb/src/main/webapp/jsp/bookList.jsp new file mode 100644 index 0000000..9c1d40d --- /dev/null +++ b/java-ee/LibraryWeb/src/main/webapp/jsp/bookList.jsp @@ -0,0 +1,33 @@ + + Library Application + + + + + + + + + + + + + + + + + + + + + + + +
Library Manager
Kontor +

Library Manager

+ +
 
+

Ingenieurbüro Thomas Peetz

+
+ + diff --git a/java-ee/LibraryWeb/src/main/webapp/jsp/index.jsp b/java-ee/LibraryWeb/src/main/webapp/jsp/index.jsp new file mode 100644 index 0000000..e75087a --- /dev/null +++ b/java-ee/LibraryWeb/src/main/webapp/jsp/index.jsp @@ -0,0 +1,58 @@ +<%@ page language="java" contentType="text/html; charset=ISO-8859-1" + pageEncoding="ISO-8859-1"%> +<%@taglib uri="http://java.sun.com/jstl/core" prefix="c"%> +<%@taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %> + + + + + + + + + Library Application + + + + + + + + + + + + + + + + + + + + + + + + +
Library Manager
+ <% out.println(com.peetz.library.navigation.MenuLinks.getInstance().toString()); %> + +

Library Manager

+ Show the booklist +
+ Import CD List +
+ + + Import Books + +
+ Show the bookshelfs +
+ Show the articles +
 
+

Ingenieurbüro Thomas Peetz

+
+ +
diff --git a/java-ee/LibraryWeb/src/main/webapp/jsp/shelfAdd.jsp b/java-ee/LibraryWeb/src/main/webapp/jsp/shelfAdd.jsp new file mode 100644 index 0000000..30b7e3b --- /dev/null +++ b/java-ee/LibraryWeb/src/main/webapp/jsp/shelfAdd.jsp @@ -0,0 +1,67 @@ +<%@ page language="java"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %> + + + + + + + + Library Application + + + + + + + + + + + + + + + + + + + + + + + + +
Library Manager
+ <% out.println(com.peetz.library.navigation.MenuLinks.getInstance().toString()); %> + + <%-- create a html form --%> + + <%-- print out the form data --%> + + + + + + + +
Title:
+ <%-- set the parameter for the dispatch action --%> + + +
+ <%-- submit and back button --%> + + Back + +   + Save +
+
 
+

Ingenieurbüro Thomas Peetz

+
+ +
diff --git a/java-ee/LibraryWeb/src/main/webapp/jsp/shelfEdit.jsp b/java-ee/LibraryWeb/src/main/webapp/jsp/shelfEdit.jsp new file mode 100644 index 0000000..a7c56af --- /dev/null +++ b/java-ee/LibraryWeb/src/main/webapp/jsp/shelfEdit.jsp @@ -0,0 +1,92 @@ +<%@ page language="java"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %> + + + + + + + + Library Application + + + + + + + + + + + + + + + + + + + + + + + + +
Library Manager
+ <% out.println(com.peetz.library.navigation.MenuLinks.getInstance().toString()); %> + + <%-- create a html form --%> + + <%-- print out the form data --%> + + + + + + + +
Title:
+ <%-- hidden fields for id and userId --%> + + <%-- set the parameter for the dispatch action --%> + + +
+ + + + + + + + + + + + + + + + + + + +
Shelfboard  
No boards available
EditDelete
No boards available
Add board
+
+ <%-- submit and back button --%> + + Back + +   + Save +
+
 
+

Ingenieurbüro Thomas Peetz

+
+ +
diff --git a/java-ee/LibraryWeb/src/main/webapp/jsp/shelfList.jsp b/java-ee/LibraryWeb/src/main/webapp/jsp/shelfList.jsp new file mode 100644 index 0000000..3313853 --- /dev/null +++ b/java-ee/LibraryWeb/src/main/webapp/jsp/shelfList.jsp @@ -0,0 +1,91 @@ +<%@ page language="java"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %> + + + + + + + + Library Application + + + + + + + + + + + + + + + + + + + + + + + + +
Show shelf list
+ <% out.println(com.peetz.library.navigation.MenuLinks.getInstance().toString()); %> + + + + <%-- set the header --%> + + + + + + + <%-- check if bookshelf exists and display message or iterate over bookshelfs --%> + + + + + + + + + <%-- print out the book informations --%> + + + <%-- print out the edit and delete link for each book --%> + + + + + + <%-- end interate --%> + + <%-- if books cannot be found display a text --%> + + + + + + + +
Bookshelf name# Shelfs  
No shelfs available
EditDelete
No shelfs found.
+
+ <%-- add and back to menu button --%> + Add a new book shelf +   + Back to menu + + +
 
+

Ingenieurbüro Thomas Peetz

+
+ +
diff --git a/java-ee/MedienImpl/build.gradle b/java-ee/MedienImpl/build.gradle new file mode 100644 index 0000000..a08e29c --- /dev/null +++ b/java-ee/MedienImpl/build.gradle @@ -0,0 +1,5 @@ +jar { + manifest { + attributes 'Implementation-Title': 'Medien', 'Implementation-Version': version + } +} diff --git a/java-ee/MedienImpl/config/checkstyle/checkstyle.xml b/java-ee/MedienImpl/config/checkstyle/checkstyle.xml new file mode 100644 index 0000000..7c682c3 --- /dev/null +++ b/java-ee/MedienImpl/config/checkstyle/checkstyle.xml @@ -0,0 +1,192 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java-ee/MedienImpl/config/checkstyle/checkstyle.xsl b/java-ee/MedienImpl/config/checkstyle/checkstyle.xsl new file mode 100644 index 0000000..393a01b --- /dev/null +++ b/java-ee/MedienImpl/config/checkstyle/checkstyle.xsl @@ -0,0 +1,179 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +

CheckStyle Audit

Designed for use with CheckStyle and Ant.
+
+ + + +
+ + + +
+ + + + + +

+

+ +


+ + + + +
+ + + + +

Files

+ + + + + + + + + + + + + + +
NameErrors
+
+ + + + +

File

+ + + + + + + + + + + + + +
Error DescriptionLine
+ Back to top +
+ + + +

Summary

+ + + + + + + + + + + + +
FilesErrors
+
+ + + + a + b + + +
+ + diff --git a/java-ee/MedienImpl/config/findbugs/findbugs.xml b/java-ee/MedienImpl/config/findbugs/findbugs.xml new file mode 100644 index 0000000..34a6e01 --- /dev/null +++ b/java-ee/MedienImpl/config/findbugs/findbugs.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/java-ee/MedienImpl/src/main/java/com/peetz/medien/dal/package-info.java b/java-ee/MedienImpl/src/main/java/com/peetz/medien/dal/package-info.java new file mode 100644 index 0000000..a144dbc --- /dev/null +++ b/java-ee/MedienImpl/src/main/java/com/peetz/medien/dal/package-info.java @@ -0,0 +1,8 @@ +/** + * + */ +/** + * @author TPEETZ + * + */ +package com.peetz.medien.dal; \ No newline at end of file diff --git a/java-ee/MedienImpl/src/main/java/com/peetz/medien/entity/AudioCDEntity.java b/java-ee/MedienImpl/src/main/java/com/peetz/medien/entity/AudioCDEntity.java new file mode 100644 index 0000000..63cadc8 --- /dev/null +++ b/java-ee/MedienImpl/src/main/java/com/peetz/medien/entity/AudioCDEntity.java @@ -0,0 +1,91 @@ +package com.peetz.medien.entity; + +import java.util.Collection; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.NamedQueries; +import javax.persistence.NamedQuery; +import javax.persistence.Table; + +@NamedQueries({ + @NamedQuery(name="AudioCD.findAll", query="SELECT c from AudioCDEntity as c"), + @NamedQuery(name="AudioCD.findByAlbum", query="SELECT c from AudioCDEntity as c WHERE c.album = :album") +}) + +@Entity +@Table(name="AUDIOCD") +public class AudioCDEntity +{ + private Long id; + private String album; + private String artist; + private String category; + private String releaseYear; + private Boolean wantList; + private Collection songs; + + @Id + @GeneratedValue(strategy=GenerationType.AUTO) + public Long getId() { return id; } + + @SuppressWarnings("unused") + private void setId(Long id) { this.id = id; } + + @Column + public String getAlbum() { + return album; + } + + public void setAlbum(String album) { + this.album = album; + } + + @Column + public String getArtist() { + return artist; + } + + public void setArtist(String artist) { + this.artist = artist; + } + + @Column + public String getCategory() { + return category; + } + + public void setCategory(String category) { + this.category = category; + } + + @Column + public String getReleaseYear() { + return releaseYear; + } + + public void setReleaseYear(String releaseYear) { + this.releaseYear = releaseYear; + } + + @Column + public Boolean getWantList() { + return wantList; + } + + public void setWantList(Boolean wantList) { + this.wantList = wantList; + } + + @Column + public Collection getSongs() { + return songs; + } + + public void setSongs(Collection songs) { + this.songs = songs; + } +} diff --git a/java-ee/MedienImpl/src/main/java/com/peetz/medien/entity/BoxSetEntity.java b/java-ee/MedienImpl/src/main/java/com/peetz/medien/entity/BoxSetEntity.java new file mode 100644 index 0000000..ad3bba9 --- /dev/null +++ b/java-ee/MedienImpl/src/main/java/com/peetz/medien/entity/BoxSetEntity.java @@ -0,0 +1,43 @@ +package com.peetz.medien.entity; + +import java.util.Collection; + +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.OneToMany; +import javax.persistence.Table; + +@Entity +@Table(name="BOXSET") +public class BoxSetEntity +{ + private Long id; + private String title; + private Collection films; + + @Id + @GeneratedValue(strategy=GenerationType.AUTO) + public Long getId() { return id; } + + @SuppressWarnings("unused") + private void setId(Long id) { this.id = id; } + + @Column + public String getTitle() { return title; } + + public void setTitle(String title) { this.title = title; } + + @OneToMany(mappedBy="boxSet", cascade=CascadeType.REMOVE) + public Collection getFilms() { + return films; + } + + public void setFilms(Collection films) { + this.films = films; + } + +} diff --git a/java-ee/MedienImpl/src/main/java/com/peetz/medien/entity/FilmEntity.java b/java-ee/MedienImpl/src/main/java/com/peetz/medien/entity/FilmEntity.java new file mode 100644 index 0000000..7be93e0 --- /dev/null +++ b/java-ee/MedienImpl/src/main/java/com/peetz/medien/entity/FilmEntity.java @@ -0,0 +1,50 @@ +package com.peetz.medien.entity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.ManyToOne; +import javax.persistence.NamedQueries; +import javax.persistence.NamedQuery; +import javax.persistence.Table; + +@NamedQueries({ + @NamedQuery(name="Film.findAll", query="SELECT f from FilmEntity as f"), + @NamedQuery(name="Film.findByTitle", query="SELECT f from FilmEntity as f WHERE f.title = :title") +}) + +@Entity +@Table(name="FILM") +public class FilmEntity +{ + private Long id; + private String title; + private BoxSetEntity boxSet; + + @Id + @GeneratedValue(strategy=GenerationType.AUTO) + public Long getId() { return id; } + + @SuppressWarnings("unused") + private void setId(Long id) { this.id = id; } + + @Column + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + @ManyToOne + public BoxSetEntity getBoxSet() { + return boxSet; + } + + public void setBoxSet(BoxSetEntity boxSet) { + this.boxSet = boxSet; + } +} diff --git a/java-ee/MedienImpl/src/main/java/com/peetz/medien/entity/package-info.java b/java-ee/MedienImpl/src/main/java/com/peetz/medien/entity/package-info.java new file mode 100644 index 0000000..803ef9c --- /dev/null +++ b/java-ee/MedienImpl/src/main/java/com/peetz/medien/entity/package-info.java @@ -0,0 +1,8 @@ +/** + * + */ +/** + * @author TPEETZ + * + */ +package com.peetz.medien.entity; \ No newline at end of file diff --git a/java-ee/MedienImpl/src/main/java/com/peetz/medien/service/MedienService.java b/java-ee/MedienImpl/src/main/java/com/peetz/medien/service/MedienService.java new file mode 100644 index 0000000..a1fc92a --- /dev/null +++ b/java-ee/MedienImpl/src/main/java/com/peetz/medien/service/MedienService.java @@ -0,0 +1,22 @@ +package com.peetz.medien.service; + +import java.util.Collection; + +import javax.ejb.Local; + +import com.peetz.medien.entity.AudioCDEntity; +import com.peetz.medien.entity.BoxSetEntity; +import com.peetz.medien.entity.FilmEntity; + +@Local +public interface MedienService +{ + public Collection getAllCDs(); + public AudioCDEntity addCD(String title); + public Collection getAllDVDs(); + public FilmEntity addDVD(String title); + public Collection getAllBoxSets(); + public BoxSetEntity addBoxSet(String title); + public BoxSetEntity assignBoxSet(BoxSetEntity boxSet, FilmEntity film); + public void saveCD(AudioCDEntity audioCD); +} diff --git a/java-ee/MedienImpl/src/main/java/com/peetz/medien/service/MedienServiceImpl.java b/java-ee/MedienImpl/src/main/java/com/peetz/medien/service/MedienServiceImpl.java new file mode 100644 index 0000000..9e08e58 --- /dev/null +++ b/java-ee/MedienImpl/src/main/java/com/peetz/medien/service/MedienServiceImpl.java @@ -0,0 +1,75 @@ +package com.peetz.medien.service; + +import java.util.Collection; + +import javax.ejb.Stateless; +import javax.ejb.TransactionAttribute; +import javax.ejb.TransactionAttributeType; + +import com.peetz.medien.entity.AudioCDEntity; +import com.peetz.medien.entity.BoxSetEntity; +import com.peetz.medien.entity.FilmEntity; +import java.util.ArrayList; +import javax.persistence.EntityManager; +import javax.persistence.PersistenceContext; +import javax.persistence.Query; + +@Stateless(name="MedienService") +@TransactionAttribute(TransactionAttributeType.REQUIRED) +public class MedienServiceImpl implements MedienService { + + @PersistenceContext(unitName = "kontor") + private EntityManager em; + + @SuppressWarnings("unchecked") + @Override + public Collection getAllCDs() { + Query query = em.createNamedQuery("AudioCD.findAll"); + ArrayList cdList = new ArrayList(query.getResultList()); + return cdList; + } + + @Override + public AudioCDEntity addCD(String title) { + // TODO Auto-generated method stub + return null; + } + + @SuppressWarnings("unchecked") + @Override + public Collection getAllDVDs() { + Query query = em.createNamedQuery("Film.findAll"); + ArrayList filmList = new ArrayList(query.getResultList()); + return filmList; + } + + @Override + public FilmEntity addDVD(String title) { + // TODO Auto-generated method stub + return null; + } + + @Override + public Collection getAllBoxSets() { + // TODO Auto-generated method stub + return null; + } + + @Override + public BoxSetEntity addBoxSet(String title) { + // TODO Auto-generated method stub + return null; + } + + @Override + public BoxSetEntity assignBoxSet(BoxSetEntity boxSet, FilmEntity film) { + // TODO Auto-generated method stub + return null; + } + + @Override + public void saveCD(AudioCDEntity audioCD) { + // TODO Auto-generated method stub + + } +} diff --git a/java-ee/MedienImpl/src/main/java/com/peetz/medien/service/package-info.java b/java-ee/MedienImpl/src/main/java/com/peetz/medien/service/package-info.java new file mode 100644 index 0000000..ab20de0 --- /dev/null +++ b/java-ee/MedienImpl/src/main/java/com/peetz/medien/service/package-info.java @@ -0,0 +1,8 @@ +/** + * + */ +/** + * @author TPEETZ + * + */ +package com.peetz.medien.service; \ No newline at end of file diff --git a/java-ee/MedienWeb/build.gradle b/java-ee/MedienWeb/build.gradle new file mode 100644 index 0000000..73a53fa --- /dev/null +++ b/java-ee/MedienWeb/build.gradle @@ -0,0 +1,7 @@ +apply plugin: 'war' + +version = '0.0.1' + +dependencies { + compile project(':MedienImpl') +} diff --git a/java-ee/MedienWeb/src/main/java/com/peetz/medien/view/MedienView.java b/java-ee/MedienWeb/src/main/java/com/peetz/medien/view/MedienView.java new file mode 100644 index 0000000..ef14235 --- /dev/null +++ b/java-ee/MedienWeb/src/main/java/com/peetz/medien/view/MedienView.java @@ -0,0 +1,36 @@ +package com.peetz.medien.view; + +import com.peetz.medien.service.MedienService; +import java.io.Serializable; +import java.util.logging.Logger; +import javax.ejb.EJB; +import javax.faces.bean.ManagedBean; +import javax.faces.bean.RequestScoped; + +/** + * + * @author TPEETZ + */ +@ManagedBean(name="MedienView") +@RequestScoped +public class MedienView implements Serializable { + + private static final Logger LOG = Logger.getLogger(MedienView.class.getName()); + + @EJB + private MedienService medienService; + + private static final long serialVersionUID = -8261128991042235283L; + + public MedienView() { + LOG.info("MedienView created"); + } + + public Integer getCdNumber() { + return medienService.getAllCDs().size(); + } + + public Integer getDvdNumber() { + return medienService.getAllDVDs().size(); + } +} diff --git a/java-ee/MedienWeb/src/main/webapp/index.jsp b/java-ee/MedienWeb/src/main/webapp/index.jsp new file mode 100644 index 0000000..3e682f8 --- /dev/null +++ b/java-ee/MedienWeb/src/main/webapp/index.jsp @@ -0,0 +1,33 @@ + + Medien Application + + + + + + + + + + + + + + + + + + + + + + + +
Medien Manager
test +

Medien Manager

+ Show the media list +
 
+

Ingenieurbüro Thomas Peetz

+
+ + diff --git a/java-ee/MedienWeb/src/main/webapp/jsp/cdAdd.jsp b/java-ee/MedienWeb/src/main/webapp/jsp/cdAdd.jsp new file mode 100644 index 0000000..f61357f --- /dev/null +++ b/java-ee/MedienWeb/src/main/webapp/jsp/cdAdd.jsp @@ -0,0 +1,75 @@ +<%@ page language="java"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %> + + + + + + + + Medien Application + + + + + + + + + + + + + + + + + + + + + + + + +
Show CD list
+ <% out.println(com.peetz.medien.navigation.MenuLinks.getInstance().toString()); %> + + <%-- create a html form --%> + + <%-- print out the form data --%> + + + + + + + + + + + + + + + +
Category:
Album:
Artist:
+ <%-- set the parameter for the dispatch action --%> + + +
+ <%-- submit and back button --%> + + Back + +   + Save +
+
 
+

Ingenieurbüro Thomas Peetz

+
+ +
diff --git a/java-ee/MedienWeb/src/main/webapp/jsp/cdEdit.jsp b/java-ee/MedienWeb/src/main/webapp/jsp/cdEdit.jsp new file mode 100644 index 0000000..f61357f --- /dev/null +++ b/java-ee/MedienWeb/src/main/webapp/jsp/cdEdit.jsp @@ -0,0 +1,75 @@ +<%@ page language="java"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %> + + + + + + + + Medien Application + + + + + + + + + + + + + + + + + + + + + + + + +
Show CD list
+ <% out.println(com.peetz.medien.navigation.MenuLinks.getInstance().toString()); %> + + <%-- create a html form --%> + + <%-- print out the form data --%> + + + + + + + + + + + + + + + +
Category:
Album:
Artist:
+ <%-- set the parameter for the dispatch action --%> + + +
+ <%-- submit and back button --%> + + Back + +   + Save +
+
 
+

Ingenieurbüro Thomas Peetz

+
+ +
diff --git a/java-ee/MedienWeb/src/main/webapp/jsp/cdList.jsp b/java-ee/MedienWeb/src/main/webapp/jsp/cdList.jsp new file mode 100644 index 0000000..ad936ab --- /dev/null +++ b/java-ee/MedienWeb/src/main/webapp/jsp/cdList.jsp @@ -0,0 +1,94 @@ +<%@ page language="java"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %> + + + + + + + + Medien Application + + + + + + + + + + + + + + + + + + + + + + + + +
Show CD list
+ <% out.println(com.peetz.medien.navigation.MenuLinks.getInstance().toString()); %> + + + + <%-- set the header --%> + + + + + + + + <%-- check if book exists and display message or iterate over cds --%> + + + + + + + + + <%-- print out the book informations --%> + + + + <%-- print out the edit and delete link for each CD --%> + + + + + + <%-- end interate --%> + + <%-- if cds cannot be found display a text --%> + + + + + + + +
CategoryAlbum titleArtist  
No CDs available
EditDelete
No CDs found.
+
+ <%-- add and back to menu button --%> + Add a new CD + +   + Back to menu + + +
 
+

Ingenieurbüro Thomas Peetz

+
+ +
diff --git a/java-ee/MedienWeb/src/main/webapp/jsp/dvdAdd.jsp b/java-ee/MedienWeb/src/main/webapp/jsp/dvdAdd.jsp new file mode 100644 index 0000000..e9d6617 --- /dev/null +++ b/java-ee/MedienWeb/src/main/webapp/jsp/dvdAdd.jsp @@ -0,0 +1,67 @@ +<%@ page language="java"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %> + + + + + + + + Medien Application + + + + + + + + + + + + + + + + + + + + + + + + +
Show CD list
+ <% out.println(com.peetz.medien.navigation.MenuLinks.getInstance().toString()); %> + + <%-- create a html form --%> + + <%-- print out the form data --%> + + + + + + + +
Film:
+ <%-- set the parameter for the dispatch action --%> + + +
+ <%-- submit and back button --%> + + Back + +   + Save +
+
 
+

Ingenieurbüro Thomas Peetz

+
+ +
diff --git a/java-ee/MedienWeb/src/main/webapp/jsp/dvdEdit.jsp b/java-ee/MedienWeb/src/main/webapp/jsp/dvdEdit.jsp new file mode 100644 index 0000000..9044d68 --- /dev/null +++ b/java-ee/MedienWeb/src/main/webapp/jsp/dvdEdit.jsp @@ -0,0 +1,69 @@ +<%@ page language="java"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %> + + + + + + + + Medien Application + + + + + + + + + + + + + + + + + + + + + + + + +
Show CD list
+ <% out.println(com.peetz.medien.navigation.MenuLinks.getInstance().toString()); %> + + <%-- create a html form --%> + + <%-- print out the form data --%> + + + + + + + +
Film:
+ <%-- hidden fields for id and userId --%> + + <%-- set the parameter for the dispatch action --%> + + +
+ <%-- submit and back button --%> + + Back + +   + Save +
+
 
+

Ingenieurbüro Thomas Peetz

+
+ +
diff --git a/java-ee/MedienWeb/src/main/webapp/jsp/dvdList.jsp b/java-ee/MedienWeb/src/main/webapp/jsp/dvdList.jsp new file mode 100644 index 0000000..6853fcd --- /dev/null +++ b/java-ee/MedienWeb/src/main/webapp/jsp/dvdList.jsp @@ -0,0 +1,90 @@ +<%@ page language="java"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%> +<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %> + + + + + + + + Medien Application + + + + + + + + + + + + + + + + + + + + + + + + +
Show DVD list
+ <% out.println(com.peetz.medien.navigation.MenuLinks.getInstance().toString()); %> + + + + <%-- set the header --%> + + + + + + <%-- check if book exists and display message or iterate over books --%> + + + + + + + + + <%-- print out the DVD informations --%> + + <%-- print out the edit and delete link for each DVD --%> + + + + + + <%-- end interate --%> + + <%-- if dvds cannot be found display a text --%> + + + + + + + +
DVD title  
No DVDs available
EditDelete
No DVDs found.
+
+ <%-- add and back to menu button --%> + Add a new DVD + +   + Back to menu + + +
 
+

Ingenieurbüro Thomas Peetz

+
+ +
diff --git a/java-ee/MedienWeb/src/main/webapp/jsp/index.jsp b/java-ee/MedienWeb/src/main/webapp/jsp/index.jsp new file mode 100644 index 0000000..2b8b61f --- /dev/null +++ b/java-ee/MedienWeb/src/main/webapp/jsp/index.jsp @@ -0,0 +1,58 @@ +<%@ page language="java" contentType="text/html; charset=ISO-8859-1" + pageEncoding="ISO-8859-1"%> +<%@taglib uri="http://java.sun.com/jstl/core" prefix="c"%> +<%@taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %> + + + + + + + + + Medien Application + + + + + + + + + + + + + + + + + + + + + + + + +
Medien Manager (CD, DVD)
+ <% out.println(com.peetz.medien.navigation.MenuLinks.getInstance().toString()); %> + +

Medien Manager

+

CD Liste

+

Import CD List

+ + + Import CDs + +

DVD Liste

+

Import DVD List

+ + + Import DVDs + +
 
+

Ingenieurbüro Thomas Peetz

+
+ +
diff --git a/java-ee/README.md b/java-ee/README.md new file mode 100644 index 0000000..91ce4c6 --- /dev/null +++ b/java-ee/README.md @@ -0,0 +1,2 @@ +# Kontor Java Enterprise Edition + diff --git a/java-ee/TradingCardsImpl/build.gradle b/java-ee/TradingCardsImpl/build.gradle new file mode 100644 index 0000000..6e6daf4 --- /dev/null +++ b/java-ee/TradingCardsImpl/build.gradle @@ -0,0 +1,5 @@ +jar { + manifest { + attributes 'Implementation-Title': 'TradingCards', 'Implementation-Version': version + } +} diff --git a/java-ee/TradingCardsImpl/config/checkstyle/checkstyle.xml b/java-ee/TradingCardsImpl/config/checkstyle/checkstyle.xml new file mode 100644 index 0000000..7c682c3 --- /dev/null +++ b/java-ee/TradingCardsImpl/config/checkstyle/checkstyle.xml @@ -0,0 +1,192 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java-ee/TradingCardsImpl/config/checkstyle/checkstyle.xsl b/java-ee/TradingCardsImpl/config/checkstyle/checkstyle.xsl new file mode 100644 index 0000000..393a01b --- /dev/null +++ b/java-ee/TradingCardsImpl/config/checkstyle/checkstyle.xsl @@ -0,0 +1,179 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +

CheckStyle Audit

Designed for use with CheckStyle and Ant.
+
+ + + +
+ + + +
+ + + + + +

+

+ +


+ + + + +
+ + + + +

Files

+ + + + + + + + + + + + + + +
NameErrors
+
+ + + + +

File

+ + + + + + + + + + + + + +
Error DescriptionLine
+ Back to top +
+ + + +

Summary

+ + + + + + + + + + + + +
FilesErrors
+
+ + + + a + b + + +
+ + diff --git a/java-ee/TradingCardsImpl/config/findbugs/findbugs.xml b/java-ee/TradingCardsImpl/config/findbugs/findbugs.xml new file mode 100644 index 0000000..34a6e01 --- /dev/null +++ b/java-ee/TradingCardsImpl/config/findbugs/findbugs.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/java-ee/TradingCardsImpl/src/main/java/com/peetz/tradingcards/dal/ManufacturerDao.java b/java-ee/TradingCardsImpl/src/main/java/com/peetz/tradingcards/dal/ManufacturerDao.java new file mode 100644 index 0000000..e216bb2 --- /dev/null +++ b/java-ee/TradingCardsImpl/src/main/java/com/peetz/tradingcards/dal/ManufacturerDao.java @@ -0,0 +1,31 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ + +package com.peetz.tradingcards.dal; + +import com.peetz.tradingcards.entity.BaseSetEntity; +import com.peetz.tradingcards.entity.ManufacturerEntity; +import java.util.List; +import javax.ejb.Local; + +/** + * + * @author tpeetz + */ +@Local +public interface ManufacturerDao { + public ManufacturerEntity getById(Long id); + + public List findByIds(List ids); + + public List findByName(String name); + + public ManufacturerEntity assignBaseSet(ManufacturerEntity comic, BaseSetEntity baseSet); + + public ManufacturerEntity store(ManufacturerEntity entity); + + public void delete(ManufacturerEntity entity); +} diff --git a/java-ee/TradingCardsImpl/src/main/java/com/peetz/tradingcards/dal/ManufacturerImpl.java b/java-ee/TradingCardsImpl/src/main/java/com/peetz/tradingcards/dal/ManufacturerImpl.java new file mode 100644 index 0000000..a072a99 --- /dev/null +++ b/java-ee/TradingCardsImpl/src/main/java/com/peetz/tradingcards/dal/ManufacturerImpl.java @@ -0,0 +1,67 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ + +package com.peetz.tradingcards.dal; + +import com.peetz.tradingcards.entity.BaseSetEntity; +import com.peetz.tradingcards.entity.ManufacturerEntity; +import java.util.List; +import javax.ejb.Stateless; +import javax.ejb.TransactionAttribute; +import javax.ejb.TransactionAttributeType; +import javax.persistence.EntityManager; +import javax.persistence.PersistenceContext; +import javax.persistence.Query; + +/** + * + * @author tpeetz + */ +@Stateless(name = "ManufacturerDao") +@TransactionAttribute(TransactionAttributeType.REQUIRED) +public class ManufacturerImpl implements ManufacturerDao { + + @PersistenceContext(unitName = "kontor") + private EntityManager em; + + @Override + public ManufacturerEntity getById(Long id) { + Query q = em.createNamedQuery("Manufacturer.findById"); + q.setParameter("id", id); + ManufacturerEntity entity = (ManufacturerEntity)q.getSingleResult(); + return entity; + } + + @Override + public List findByIds(List ids) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @SuppressWarnings("unchecked") + @Override + public List findByName(String name) { + Query q = em.createNamedQuery("Manufacturer.findByName"); + q.setParameter("name", name); + List resultList = q.getResultList(); + return resultList; + } + + @Override + public ManufacturerEntity assignBaseSet(ManufacturerEntity comic, BaseSetEntity baseSet) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @Override + public ManufacturerEntity store(ManufacturerEntity entity) { + em.persist(entity); + return entity; + } + + @Override + public void delete(ManufacturerEntity entity) { + em.remove(entity); + } +} diff --git a/java-ee/TradingCardsImpl/src/main/java/com/peetz/tradingcards/dal/SportDao.java b/java-ee/TradingCardsImpl/src/main/java/com/peetz/tradingcards/dal/SportDao.java new file mode 100644 index 0000000..badd03c --- /dev/null +++ b/java-ee/TradingCardsImpl/src/main/java/com/peetz/tradingcards/dal/SportDao.java @@ -0,0 +1,28 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ + +package com.peetz.tradingcards.dal; + +import com.peetz.tradingcards.entity.SportEntity; +import java.util.List; +import javax.ejb.Local; + +/** + * + * @author tpeetz + */ +@Local +public interface SportDao { + public SportEntity getById(Long id); + + public List findByIds(List ids); + + public List findByName(String name); + + public SportEntity store(SportEntity entity); + + public void delete(SportEntity entity); +} diff --git a/java-ee/TradingCardsImpl/src/main/java/com/peetz/tradingcards/dal/SportImpl.java b/java-ee/TradingCardsImpl/src/main/java/com/peetz/tradingcards/dal/SportImpl.java new file mode 100644 index 0000000..059f52f --- /dev/null +++ b/java-ee/TradingCardsImpl/src/main/java/com/peetz/tradingcards/dal/SportImpl.java @@ -0,0 +1,58 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ + +package com.peetz.tradingcards.dal; + +import com.peetz.tradingcards.entity.SportEntity; +import java.util.List; +import javax.ejb.Stateless; +import javax.ejb.TransactionAttribute; +import javax.ejb.TransactionAttributeType; +import javax.persistence.EntityManager; +import javax.persistence.PersistenceContext; +import javax.persistence.Query; + +/** + * + * @author tpeetz + */ +@Stateless(name = "SportDao") +@TransactionAttribute(TransactionAttributeType.REQUIRED) +public class SportImpl implements SportDao { + + @PersistenceContext(unitName = "kontor") + private EntityManager em; + + @Override + public SportEntity getById(Long id) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @Override + public List findByIds(List ids) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @SuppressWarnings("unchecked") + @Override + public List findByName(String name) { + Query query = em.createNamedQuery("Sport.findByName"); + query.setParameter("name", name); + List resultList = query.getResultList(); + return resultList; + } + + @Override + public SportEntity store(SportEntity entity) { + em.persist(entity); + return entity; + } + + @Override + public void delete(SportEntity entity) { + em.remove(entity); + } +} diff --git a/java-ee/TradingCardsImpl/src/main/java/com/peetz/tradingcards/entity/BaseSetEntity.java b/java-ee/TradingCardsImpl/src/main/java/com/peetz/tradingcards/entity/BaseSetEntity.java new file mode 100644 index 0000000..30a23ac --- /dev/null +++ b/java-ee/TradingCardsImpl/src/main/java/com/peetz/tradingcards/entity/BaseSetEntity.java @@ -0,0 +1,67 @@ +package com.peetz.tradingcards.entity; + +import java.util.ArrayList; +import java.util.Collection; + +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.ManyToOne; +import javax.persistence.OneToMany; +import javax.persistence.Table; + +@Entity +@Table(name="BASESET") +public class BaseSetEntity { + private Long id; + private String name; + private ManufacturerEntity manufacturer; + private Collection parallelSets = new ArrayList(); + private Collection inserts = new ArrayList(); + + @Id + @GeneratedValue(strategy=GenerationType.AUTO) + public Long getId() { return id; } + + @SuppressWarnings("unused") + private void setId(Long id) { this.id = id; } + + @Column + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @ManyToOne + public ManufacturerEntity getManufacturer() { + return manufacturer; + } + + public void setManufacturer(ManufacturerEntity manufacturer) { + this.manufacturer = manufacturer; + } + + @OneToMany(mappedBy="baseSet", cascade=CascadeType.REMOVE) + public Collection getParallelSets() { + return parallelSets; + } + + public void setParallelSets(Collection parallelSets) { + this.parallelSets = parallelSets; + } + + @OneToMany(mappedBy="baseSet", cascade=CascadeType.REMOVE) + public Collection getInserts() { + return inserts; + } + + public void setInserts(Collection inserts) { + this.inserts = inserts; + } +} diff --git a/java-ee/TradingCardsImpl/src/main/java/com/peetz/tradingcards/entity/InsertEntity.java b/java-ee/TradingCardsImpl/src/main/java/com/peetz/tradingcards/entity/InsertEntity.java new file mode 100644 index 0000000..7c44c92 --- /dev/null +++ b/java-ee/TradingCardsImpl/src/main/java/com/peetz/tradingcards/entity/InsertEntity.java @@ -0,0 +1,74 @@ +package com.peetz.tradingcards.entity; + +import java.util.ArrayList; +import java.util.Collection; +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.ManyToOne; +import javax.persistence.NamedQueries; +import javax.persistence.NamedQuery; +import javax.persistence.OneToMany; +import javax.persistence.Table; + +@NamedQueries({ + @NamedQuery(name="InsertSet.findAll", query="SELECT i from InsertEntity as i"), + @NamedQuery(name="InsertSet.findById", query="SELECT i from InsertEntity as i WHERE i.id = :id"), + @NamedQuery(name="InsertSet.findByName", query="SELECT i from InsertEntity as i WHERE i.name = :name") +}) + +@Entity +@Table(name="INSERTSET") +public class InsertEntity { + private Long id; + private String name; + private ManufacturerEntity manufacturer; + private BaseSetEntity baseSet; + private Collection sportCard = new ArrayList(); + + @Id + @GeneratedValue(strategy=GenerationType.AUTO) + public Long getId() { return id; } + + @SuppressWarnings("unused") + private void setId(Long id) { this.id = id; } + + @Column + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @ManyToOne + public ManufacturerEntity getManufacturer() { + return manufacturer; + } + + public void setManufacturer(ManufacturerEntity manufacturer) { + this.manufacturer = manufacturer; + } + + @ManyToOne + public BaseSetEntity getBaseSet() { + return baseSet; + } + + public void setBaseSet(BaseSetEntity baseSet) { + this.baseSet = baseSet; + } + + @OneToMany(mappedBy="insert", cascade=CascadeType.REMOVE) + public Collection getSportCard() { + return sportCard; + } + + public void setSportCard(Collection sportCard) { + this.sportCard = sportCard; + } +} diff --git a/java-ee/TradingCardsImpl/src/main/java/com/peetz/tradingcards/entity/ManufacturerEntity.java b/java-ee/TradingCardsImpl/src/main/java/com/peetz/tradingcards/entity/ManufacturerEntity.java new file mode 100644 index 0000000..4d73b06 --- /dev/null +++ b/java-ee/TradingCardsImpl/src/main/java/com/peetz/tradingcards/entity/ManufacturerEntity.java @@ -0,0 +1,74 @@ +package com.peetz.tradingcards.entity; + +import java.util.ArrayList; +import java.util.Collection; + +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.NamedQueries; +import javax.persistence.NamedQuery; +import javax.persistence.OneToMany; +import javax.persistence.Table; + +@NamedQueries({ + @NamedQuery(name="Manufacturer.findAll", query="SELECT m from ManufacturerEntity as m"), + @NamedQuery(name="Manufacturer.findByName", query="SELECT m from ManufacturerEntity as m WHERE m.name = :name") +}) + +@Entity +@Table(name="MANUFACTURER") +public class ManufacturerEntity { + + private Long id; + private String name; + private Collection baseSets = new ArrayList(); + private Collection parallelSets = new ArrayList(); + private Collection inserts = new ArrayList(); + + @Id + @GeneratedValue(strategy=GenerationType.AUTO) + public Long getId() { return id; } + + @SuppressWarnings("unused") + private void setId(Long id) { this.id = id; } + + @Column + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @OneToMany(mappedBy="manufacturer", cascade=CascadeType.REMOVE) + public Collection getBaseSets() { + return baseSets; + } + + public void setBaseSets(Collection baseSets) { + this.baseSets = baseSets; + } + + @OneToMany(mappedBy="manufacturer", cascade=CascadeType.REMOVE) + public Collection getParallelSets() { + return parallelSets; + } + + public void setParallelSets(Collection parallelSets) { + this.parallelSets = parallelSets; + } + + @OneToMany(mappedBy="manufacturer", cascade=CascadeType.REMOVE) + public Collection getInserts() { + return inserts; + } + + public void setInserts(Collection inserts) { + this.inserts = inserts; + } +} diff --git a/java-ee/TradingCardsImpl/src/main/java/com/peetz/tradingcards/entity/ParallelSetEntity.java b/java-ee/TradingCardsImpl/src/main/java/com/peetz/tradingcards/entity/ParallelSetEntity.java new file mode 100644 index 0000000..2057456 --- /dev/null +++ b/java-ee/TradingCardsImpl/src/main/java/com/peetz/tradingcards/entity/ParallelSetEntity.java @@ -0,0 +1,53 @@ +package com.peetz.tradingcards.entity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.ManyToOne; +import javax.persistence.Table; + +@Entity +@Table(name="PARALLELSET") +public class ParallelSetEntity { + private Long id; + private String name; + private ManufacturerEntity manufacturer; + + private BaseSetEntity baseSet; + + @Id + @GeneratedValue(strategy=GenerationType.AUTO) + public Long getId() { return id; } + + @SuppressWarnings("unused") + private void setId(Long id) { this.id = id; } + + @Column + public String getName() { + return name; + } + + @ManyToOne + public ManufacturerEntity getManufacturer() { + return manufacturer; + } + + public void setManufacturer(ManufacturerEntity manufacturer) { + this.manufacturer = manufacturer; + } + + public void setName(String name) { + this.name = name; + } + + @ManyToOne + public BaseSetEntity getBaseSet() { + return baseSet; + } + + public void setBaseSet(BaseSetEntity baseSet) { + this.baseSet = baseSet; + } +} diff --git a/java-ee/TradingCardsImpl/src/main/java/com/peetz/tradingcards/entity/PlayerEntity.java b/java-ee/TradingCardsImpl/src/main/java/com/peetz/tradingcards/entity/PlayerEntity.java new file mode 100644 index 0000000..2d34b16 --- /dev/null +++ b/java-ee/TradingCardsImpl/src/main/java/com/peetz/tradingcards/entity/PlayerEntity.java @@ -0,0 +1,46 @@ +package com.peetz.tradingcards.entity; + +import java.util.ArrayList; +import java.util.Collection; + +import javax.persistence.CascadeType; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.ManyToOne; +import javax.persistence.OneToMany; +import javax.persistence.Table; + +@Entity +@Table(name="PLAYER") +public class PlayerEntity { + private Long id; + private TeamEntity team; + private Collection cards = new ArrayList(); + + @Id + @GeneratedValue(strategy=GenerationType.AUTO) + public Long getId() { return id; } + + @SuppressWarnings("unused") + private void setId(Long id) { this.id = id; } + + @ManyToOne + public TeamEntity getTeam() { + return team; + } + + public void setTeam(TeamEntity team) { + this.team = team; + } + + @OneToMany(mappedBy="player", cascade=CascadeType.REMOVE) + public Collection getCards() { + return cards; + } + + public void setCards(Collection cards) { + this.cards = cards; + } +} diff --git a/java-ee/TradingCardsImpl/src/main/java/com/peetz/tradingcards/entity/PositionEntity.java b/java-ee/TradingCardsImpl/src/main/java/com/peetz/tradingcards/entity/PositionEntity.java new file mode 100644 index 0000000..b4e1a0b --- /dev/null +++ b/java-ee/TradingCardsImpl/src/main/java/com/peetz/tradingcards/entity/PositionEntity.java @@ -0,0 +1,53 @@ +package com.peetz.tradingcards.entity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.ManyToOne; +import javax.persistence.Table; + +@Entity +@Table(name="POSITION") +public class PositionEntity { + + private Long id; + private String name; + private String shortName; + private SportEntity sport; + + @Id + @GeneratedValue(strategy=GenerationType.AUTO) + public Long getId() { return id; } + + @SuppressWarnings("unused") + private void setId(Long id) { this.id = id; } + + @Column + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @Column + public String getShortName() { + return shortName; + } + + public void setShortName(String shortName) { + this.shortName = shortName; + } + + @ManyToOne + public SportEntity getSport() { + return sport; + } + + public void setSport(SportEntity sport) { + this.sport = sport; + } +} diff --git a/java-ee/TradingCardsImpl/src/main/java/com/peetz/tradingcards/entity/SportCardEntity.java b/java-ee/TradingCardsImpl/src/main/java/com/peetz/tradingcards/entity/SportCardEntity.java new file mode 100644 index 0000000..fd0e5e4 --- /dev/null +++ b/java-ee/TradingCardsImpl/src/main/java/com/peetz/tradingcards/entity/SportCardEntity.java @@ -0,0 +1,68 @@ +package com.peetz.tradingcards.entity; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.ManyToOne; +import javax.persistence.NamedQueries; +import javax.persistence.NamedQuery; +import javax.persistence.Table; + +@NamedQueries({ + @NamedQuery(name="SportCard.findAll", query="SELECT s from SportCardEntity as s") +}) + +@Entity +@Table(name = "SPORTCARD") +public class SportCardEntity { + private Long id; + private PlayerEntity player; + private BaseSetEntity baseSet; + private ParallelSetEntity parallelSet; + private InsertEntity insert; + + @Id + @GeneratedValue(strategy=GenerationType.AUTO) + public Long getId() { return id; } + + @SuppressWarnings("unused") + private void setId(Long id) { this.id = id; } + + @ManyToOne + public PlayerEntity getPlayer() { + return player; + } + + public void setPlayer(PlayerEntity player) { + this.player = player; + } + + @ManyToOne + public BaseSetEntity getBaseSet() { + return baseSet; + } + + public void setBaseSet(BaseSetEntity baseSet) { + this.baseSet = baseSet; + } + + @ManyToOne + public ParallelSetEntity getParallelSet() { + return parallelSet; + } + + public void setParallelSet(ParallelSetEntity parallelSet) { + this.parallelSet = parallelSet; + } + + @ManyToOne + public InsertEntity getInsert() { + return insert; + } + + public void setInsert(InsertEntity insert) { + this.insert = insert; + } + +} diff --git a/java-ee/TradingCardsImpl/src/main/java/com/peetz/tradingcards/entity/SportEntity.java b/java-ee/TradingCardsImpl/src/main/java/com/peetz/tradingcards/entity/SportEntity.java new file mode 100644 index 0000000..7574a2d --- /dev/null +++ b/java-ee/TradingCardsImpl/src/main/java/com/peetz/tradingcards/entity/SportEntity.java @@ -0,0 +1,64 @@ +package com.peetz.tradingcards.entity; + +import java.util.ArrayList; +import java.util.Collection; + +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.NamedQueries; +import javax.persistence.NamedQuery; +import javax.persistence.OneToMany; +import javax.persistence.Table; + +@NamedQueries({ + @NamedQuery(name="Sport.findAll", query="SELECT s from SportEntity as s"), + @NamedQuery(name="Sport.findByName", query="SELECT s from SportEntity as s WHERE s.name = :name") +}) + +@Entity +@Table(name="SPORT") +public class SportEntity { + + private Long id; + private String name; + private Collection teams = new ArrayList(); + private Collection positions = new ArrayList(); + + @Id + @GeneratedValue(strategy=GenerationType.AUTO) + public Long getId() { return id; } + + @SuppressWarnings("unused") + private void setId(Long id) { this.id = id; } + + @Column + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @OneToMany(mappedBy="sport", cascade=CascadeType.REMOVE) + public Collection getTeams() { + return teams; + } + + public void setTeams(Collection teams) { + this.teams = teams; + } + + @OneToMany(mappedBy="sport", cascade=CascadeType.REMOVE) + public Collection getPositions() { + return positions; + } + + public void setPositions(Collection positions) { + this.positions = positions; + } +} diff --git a/java-ee/TradingCardsImpl/src/main/java/com/peetz/tradingcards/entity/TeamEntity.java b/java-ee/TradingCardsImpl/src/main/java/com/peetz/tradingcards/entity/TeamEntity.java new file mode 100644 index 0000000..a0863ea --- /dev/null +++ b/java-ee/TradingCardsImpl/src/main/java/com/peetz/tradingcards/entity/TeamEntity.java @@ -0,0 +1,42 @@ +package com.peetz.tradingcards.entity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.ManyToOne; +import javax.persistence.NamedQueries; +import javax.persistence.NamedQuery; +import javax.persistence.Table; + +@NamedQueries({ + @NamedQuery(name="Team.findAll", query="SELECT t from TeamEntity as t"), + @NamedQuery(name="Team.findByName", query="SELECT t from TeamEntity as t WHERE t.name = :name") +}) + +@Entity +@Table(name="TEAM") +public class TeamEntity { + + private Long id; + private String name; + private SportEntity sport; + + @Id + @GeneratedValue(strategy=GenerationType.AUTO) + public Long getId() { return id; } + + @SuppressWarnings("unused") + private void setId(Long id) { this.id = id; } + + @Column + public String getName() { return name; } + + public void setName(String name) { this.name = name; } + + @ManyToOne + public SportEntity getSport() { return sport; } + + public void setSport(SportEntity sport) { this.sport = sport; } +} diff --git a/java-ee/TradingCardsImpl/src/main/java/com/peetz/tradingcards/service/SportService.java b/java-ee/TradingCardsImpl/src/main/java/com/peetz/tradingcards/service/SportService.java new file mode 100644 index 0000000..805101a --- /dev/null +++ b/java-ee/TradingCardsImpl/src/main/java/com/peetz/tradingcards/service/SportService.java @@ -0,0 +1,24 @@ +package com.peetz.tradingcards.service; + +import java.util.Collection; + +import javax.ejb.Local; + +import com.peetz.tradingcards.entity.PositionEntity; +import com.peetz.tradingcards.entity.SportEntity; +import com.peetz.tradingcards.entity.TeamEntity; + +@Local +public interface SportService { + + Collection getAllSports(); + + Collection getAllTeams(); + + void addSport(String name); + + Collection getTeams(SportEntity sport); + + Collection getPositions(SportEntity sport); + +} diff --git a/java-ee/TradingCardsImpl/src/main/java/com/peetz/tradingcards/service/SportServiceImpl.java b/java-ee/TradingCardsImpl/src/main/java/com/peetz/tradingcards/service/SportServiceImpl.java new file mode 100644 index 0000000..1a348ef --- /dev/null +++ b/java-ee/TradingCardsImpl/src/main/java/com/peetz/tradingcards/service/SportServiceImpl.java @@ -0,0 +1,63 @@ +package com.peetz.tradingcards.service; + +import com.peetz.tradingcards.dal.SportDao; +import java.util.Collection; + +import javax.ejb.Stateless; +import javax.ejb.TransactionAttribute; +import javax.ejb.TransactionAttributeType; + +import com.peetz.tradingcards.entity.PositionEntity; +import com.peetz.tradingcards.entity.SportEntity; +import com.peetz.tradingcards.entity.TeamEntity; +import java.util.ArrayList; +import javax.ejb.EJB; +import javax.persistence.EntityManager; +import javax.persistence.PersistenceContext; +import javax.persistence.Query; + +@Stateless(name="SportService") +@TransactionAttribute(TransactionAttributeType.REQUIRED) +public class SportServiceImpl implements SportService { + + @PersistenceContext(unitName = "kontor") + private EntityManager em; + + @EJB + SportDao sportDao; + + @SuppressWarnings("unchecked") + @Override + public Collection getAllSports() { + Query query = em.createNamedQuery("Sport.findAll"); + ArrayList sportList = new ArrayList(query.getResultList()); + return sportList; + } + + @SuppressWarnings("unchecked") + @Override + public Collection getAllTeams() { + Query query = em.createNamedQuery("Team.findAll"); + ArrayList teamList = new ArrayList(query.getResultList()); + return teamList; + } + + + @Override + public void addSport(String name) { + SportEntity entity = new SportEntity(); + entity.setName(name); + sportDao.store(entity); + } + + @Override + public Collection getTeams(SportEntity sport) { + return null; + } + + @Override + public Collection getPositions(SportEntity sport) { + // TODO Auto-generated method stub + return null; + } +} diff --git a/java-ee/TradingCardsImpl/src/main/java/com/peetz/tradingcards/service/TradingcardService.java b/java-ee/TradingCardsImpl/src/main/java/com/peetz/tradingcards/service/TradingcardService.java new file mode 100644 index 0000000..9d5b0eb --- /dev/null +++ b/java-ee/TradingCardsImpl/src/main/java/com/peetz/tradingcards/service/TradingcardService.java @@ -0,0 +1,28 @@ +package com.peetz.tradingcards.service; + +import java.util.Collection; + +import javax.ejb.Local; + +import com.peetz.tradingcards.entity.BaseSetEntity; +import com.peetz.tradingcards.entity.InsertEntity; +import com.peetz.tradingcards.entity.ManufacturerEntity; +import com.peetz.tradingcards.entity.ParallelSetEntity; +import com.peetz.tradingcards.entity.SportCardEntity; + +@Local +public interface TradingcardService { + + Collection getAllManufacturers(); + + void addManufacturer(String name); + + Collection getAllSportCards(); + + Collection getBaseSetsByManufacturer(ManufacturerEntity manufacturer); + + Collection getParallelSetsByManufacturer(ManufacturerEntity manufacturer); + + Collection getInsertsByManufacturer(ManufacturerEntity manufacturer); + +} diff --git a/java-ee/TradingCardsImpl/src/main/java/com/peetz/tradingcards/service/TradingcardServiceImpl.java b/java-ee/TradingCardsImpl/src/main/java/com/peetz/tradingcards/service/TradingcardServiceImpl.java new file mode 100644 index 0000000..b8703a4 --- /dev/null +++ b/java-ee/TradingCardsImpl/src/main/java/com/peetz/tradingcards/service/TradingcardServiceImpl.java @@ -0,0 +1,75 @@ +package com.peetz.tradingcards.service; + +import com.peetz.tradingcards.dal.ManufacturerDao; +import java.util.Collection; + +import javax.ejb.Stateless; +import javax.ejb.TransactionAttribute; +import javax.ejb.TransactionAttributeType; + +import com.peetz.tradingcards.entity.BaseSetEntity; +import com.peetz.tradingcards.entity.InsertEntity; +import com.peetz.tradingcards.entity.ManufacturerEntity; +import com.peetz.tradingcards.entity.ParallelSetEntity; +import com.peetz.tradingcards.entity.SportCardEntity; +import java.util.ArrayList; +import java.util.List; +import javax.ejb.EJB; +import javax.persistence.EntityManager; +import javax.persistence.PersistenceContext; +import javax.persistence.Query; + +@Stateless(name="TradingcardService") +@TransactionAttribute(TransactionAttributeType.REQUIRED) +public class TradingcardServiceImpl implements TradingcardService { + + @PersistenceContext(unitName = "kontor") + private EntityManager em; + + @EJB + ManufacturerDao manufacturerDao; + + @SuppressWarnings("unchecked") + @Override + public Collection getAllManufacturers() { + Query query = em.createNamedQuery("Manufacturer.findAll"); + ArrayList manufacturerList = new ArrayList(query.getResultList()); + return manufacturerList; + } + + @Override + public void addManufacturer(String name) { + List resultList = manufacturerDao.findByName(name); + if (resultList.isEmpty()) { + ManufacturerEntity manufacturer = new ManufacturerEntity(); + manufacturer.setName(name); + manufacturerDao.store(manufacturer); + } + } + + @SuppressWarnings("unchecked") + @Override + public Collection getAllSportCards() { + Query query = em.createNamedQuery("SportCard.findAll"); + ArrayList sportCardList = new ArrayList(query.getResultList()); + return sportCardList; + } + + @Override + public Collection getBaseSetsByManufacturer(ManufacturerEntity manufacturer) { + // TODO Auto-generated method stub + return null; + } + + @Override + public Collection getParallelSetsByManufacturer(ManufacturerEntity manufacturer) { + // TODO Auto-generated method stub + return null; + } + + @Override + public Collection getInsertsByManufacturer(ManufacturerEntity manufacturer) { + // TODO Auto-generated method stub + return null; + } +} \ No newline at end of file diff --git a/java-ee/TradingCardsImpl/src/main/java/com/peetz/tradingcards/service/package-info.java b/java-ee/TradingCardsImpl/src/main/java/com/peetz/tradingcards/service/package-info.java new file mode 100644 index 0000000..f0eb37b --- /dev/null +++ b/java-ee/TradingCardsImpl/src/main/java/com/peetz/tradingcards/service/package-info.java @@ -0,0 +1,5 @@ +/** + * @author TPEETZ + * + */ +package com.peetz.tradingcards.service; \ No newline at end of file diff --git a/java-ee/TradingCardsImpl/src/test/java/com/peetz/tradingcards/dal/ManufacturerImplTest.java b/java-ee/TradingCardsImpl/src/test/java/com/peetz/tradingcards/dal/ManufacturerImplTest.java new file mode 100644 index 0000000..2e5b5e1 --- /dev/null +++ b/java-ee/TradingCardsImpl/src/test/java/com/peetz/tradingcards/dal/ManufacturerImplTest.java @@ -0,0 +1,147 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ + +package com.peetz.tradingcards.dal; + +import com.peetz.tradingcards.entity.BaseSetEntity; +import com.peetz.tradingcards.entity.ManufacturerEntity; +import java.util.Collection; +import java.util.List; +import javax.ejb.embeddable.EJBContainer; +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; +import static org.junit.Assert.*; + +/** + * + * @author tpeetz + */ +public class ManufacturerImplTest { + + public ManufacturerImplTest() { + } + + @BeforeClass + public static void setUpClass() { + } + + @AfterClass + public static void tearDownClass() { + } + + @Before + public void setUp() { + } + + @After + public void tearDown() { + } + + /** + * Test of getById method, of class ManufacturerImpl. + */ + @Test + public void testGetById() throws Exception { + System.out.println("getById"); + Long id = null; + EJBContainer container = javax.ejb.embeddable.EJBContainer.createEJBContainer(); + ManufacturerDao instance = (ManufacturerDao)container.getContext().lookup("java:global/main/ManufacturerDao"); + ManufacturerEntity expResult = null; + ManufacturerEntity result = instance.getById(id); + assertEquals(expResult, result); + container.close(); + // TODO review the generated test code and remove the default call to fail. + fail("The test case is a prototype."); + } + + /** + * Test of findByIds method, of class ManufacturerImpl. + */ + @Test + public void testFindByIds() throws Exception { + System.out.println("findByIds"); + List ids = null; + EJBContainer container = javax.ejb.embeddable.EJBContainer.createEJBContainer(); + ManufacturerDao instance = (ManufacturerDao)container.getContext().lookup("java:global/classes/ManufacturerImpl"); + Collection expResult = null; + Collection result = instance.findByIds(ids); + assertEquals(expResult, result); + container.close(); + // TODO review the generated test code and remove the default call to fail. + fail("The test case is a prototype."); + } + + /** + * Test of findByName method, of class ManufacturerImpl. + */ + @Test + public void testFindByName() throws Exception { + System.out.println("findByName"); + String name = ""; + EJBContainer container = javax.ejb.embeddable.EJBContainer.createEJBContainer(); + ManufacturerDao instance = (ManufacturerDao)container.getContext().lookup("java:global/classes/ManufacturerImpl"); + Collection expResult = null; + Collection result = instance.findByName(name); + assertEquals(expResult, result); + container.close(); + // TODO review the generated test code and remove the default call to fail. + fail("The test case is a prototype."); + } + + /** + * Test of assignBaseSet method, of class ManufacturerImpl. + */ + @Test + public void testAssignBaseSet() throws Exception { + System.out.println("assignBaseSet"); + ManufacturerEntity comic = null; + BaseSetEntity baseSet = null; + EJBContainer container = javax.ejb.embeddable.EJBContainer.createEJBContainer(); + ManufacturerDao instance = (ManufacturerDao)container.getContext().lookup("java:global/classes/ManufacturerImpl"); + ManufacturerEntity expResult = null; + ManufacturerEntity result = instance.assignBaseSet(comic, baseSet); + assertEquals(expResult, result); + container.close(); + // TODO review the generated test code and remove the default call to fail. + fail("The test case is a prototype."); + } + + /** + * Test of store method, of class ManufacturerImpl. + */ + @Test + public void testStore() throws Exception { + System.out.println("store"); + ManufacturerEntity entity = null; + EJBContainer container = javax.ejb.embeddable.EJBContainer.createEJBContainer(); + ManufacturerDao instance = (ManufacturerDao)container.getContext().lookup("java:global/classes/ManufacturerImpl"); + ManufacturerEntity expResult = null; + ManufacturerEntity result = instance.store(entity); + assertEquals(expResult, result); + container.close(); + // TODO review the generated test code and remove the default call to fail. + fail("The test case is a prototype."); + } + + /** + * Test of delete method, of class ManufacturerImpl. + */ + @Test + public void testDelete() throws Exception { + System.out.println("delete"); + ManufacturerEntity entity = null; + EJBContainer container = javax.ejb.embeddable.EJBContainer.createEJBContainer(); + ManufacturerDao instance = (ManufacturerDao)container.getContext().lookup("java:global/classes/ManufacturerImpl"); + instance.delete(entity); + container.close(); + // TODO review the generated test code and remove the default call to fail. + fail("The test case is a prototype."); + } + +} diff --git a/java-ee/TradingCardsWeb/build.gradle b/java-ee/TradingCardsWeb/build.gradle new file mode 100644 index 0000000..baa6136 --- /dev/null +++ b/java-ee/TradingCardsWeb/build.gradle @@ -0,0 +1,7 @@ +apply plugin: 'war' + +version = '0.0.1' + +dependencies { + compile project(':TradingCardsImpl') +} diff --git a/java-ee/TradingCardsWeb/src/main/java/com/peetz/tradingcards/view/SportView.java b/java-ee/TradingCardsWeb/src/main/java/com/peetz/tradingcards/view/SportView.java new file mode 100644 index 0000000..b95ca0b --- /dev/null +++ b/java-ee/TradingCardsWeb/src/main/java/com/peetz/tradingcards/view/SportView.java @@ -0,0 +1,52 @@ +package com.peetz.tradingcards.view; + +import com.peetz.tradingcards.dal.SportDao; +import com.peetz.tradingcards.service.SportService; +import java.io.Serializable; +import java.util.logging.Logger; +import javax.ejb.EJB; +import javax.faces.bean.ManagedBean; +import javax.faces.bean.RequestScoped; + +/** + * + * @author tpeetz + */ +@ManagedBean(name="TradingCardsView") +@RequestScoped +public class SportView implements Serializable { + + private static final long serialVersionUID = 1399103334723066025L; + + private static final Logger LOG = Logger.getLogger(SportView.class.getName()); + + private String name; + + @EJB + private SportService sportService; + + public SportView() { + LOG.info("SportView created"); + } + + public Integer getSportNumber() { + LOG.info("SportView#getSportNumber"); + return sportService.getAllSports().size(); + } + + public Integer getTeamNumber() { + LOG.info("SportView#getTeamNumber"); + return sportService.getAllTeams().size(); + } + + public String getName() { + LOG.info("SportView#getName"); + return name; + } + + public void setName(String name) { + this.name = name; + sportService.addSport(name); + LOG.info("SportView#setName"); + } +} diff --git a/java-ee/TradingCardsWeb/src/main/java/com/peetz/tradingcards/view/TradingCardsView.java b/java-ee/TradingCardsWeb/src/main/java/com/peetz/tradingcards/view/TradingCardsView.java new file mode 100644 index 0000000..e1d5879 --- /dev/null +++ b/java-ee/TradingCardsWeb/src/main/java/com/peetz/tradingcards/view/TradingCardsView.java @@ -0,0 +1,36 @@ +package com.peetz.tradingcards.view; + +import com.peetz.tradingcards.service.TradingcardService; +import java.io.Serializable; +import java.util.logging.Logger; +import javax.ejb.EJB; +import javax.faces.bean.ManagedBean; +import javax.faces.bean.RequestScoped; + +/** + * + * @author TPEETZ + */ +@ManagedBean(name="TradingCardsView") +@RequestScoped +public class TradingCardsView implements Serializable { + + private static final Logger LOG = Logger.getLogger(TradingCardsView.class.getName()); + + @EJB + private TradingcardService tradingcardService; + + private static final long serialVersionUID = -8261128991042235283L; + + public TradingCardsView() { + LOG.info("TradingCardsView created"); + } + + public Integer getManufacturerNumber() { + return tradingcardService.getAllManufacturers().size(); + } + + public Integer getSportCardNumber() { + return tradingcardService.getAllSportCards().size(); + } +} diff --git a/java-ee/TradingCardsWeb/src/main/webapp/index.jsp b/java-ee/TradingCardsWeb/src/main/webapp/index.jsp new file mode 100644 index 0000000..d085601 --- /dev/null +++ b/java-ee/TradingCardsWeb/src/main/webapp/index.jsp @@ -0,0 +1,33 @@ + + TradingCards Application + + + + + + + + + + + + + + + + + + + + + + + +
TradingCards Manager
test +

TradingCards Manager

+ Show the card list +
 
+

Ingenieurbüro Thomas Peetz

+
+ + diff --git a/java-ee/build.gradle b/java-ee/build.gradle new file mode 100644 index 0000000..e8b1bd8 --- /dev/null +++ b/java-ee/build.gradle @@ -0,0 +1,69 @@ +allprojects { + apply plugin: 'java' + apply plugin: 'build-dashboard' + + repositories { + mavenLocal() + mavenCentral() + } + version = '0.0.1' +} + +repositories { + mavenLocal() + mavenCentral() +} + +group = 'com.ibtp.kontor' + +dependencies { + compile 'org.jboss.spec.javax.faces:jboss-jsf-api_2.2_spec:+' + compile 'org.hibernate.ogm:hibernate-ogm-mongodb:4.2.+' + compile "ch.qos.logback:logback-classic:1.1.3" + compile "org.slf4j:log4j-over-slf4j:1.7.13" + compile "javax:javaee-api:7.0" +} + +subprojects { project -> + if (project.name.endsWith('Impl')) { + apply plugin: 'checkstyle' + apply plugin: 'findbugs' + apply plugin: 'pmd' + apply plugin: 'jacoco' + dependencies { + compile 'org.glassfish.main.ejb:javax.ejb:3.1.2.2' + compile 'org.glassfish.main.transaction:javax.transaction:3.1.2.2' + compile 'org.glassfish:javax.faces:2.1.6' + compile 'org.eclipse.persistence:javax.persistence:2.1.0' + compile 'org.eclipse.persistence:eclipselink:2.5.1' + compile 'org.hibernate:hibernate-core:4.3.8.Final' + compile 'org.hibernate:hibernate-entitymanager:4.3.8.Final' + compile 'org.hsqldb:hsqldb:2.3.0' + compile 'ch.qos.logback:logback-core:1.1.2' + compile 'ch.qos.logback:logback-classic:1.1.2' + testCompile 'org.glassfish.main.extras:glassfish-embedded-all:3.1.2.2' + testCompile group: 'junit', name: 'junit', version: '4.11' + } + tasks.withType(Checkstyle) { + ignoreFailures = true + showViolations = false + reports { + xml.enabled true + } + } + tasks.withType(FindBugs) { + reports { + xml.enabled true + } + } + pmd { + ignoreFailures = true + } + build.dependsOn(['jacocoTestReport']) + } +} + +wrapper { + gradleVersion = '3.3' +} + diff --git a/java-ee/comics.xml b/java-ee/comics.xml new file mode 100644 index 0000000..730fdeb --- /dev/null +++ b/java-ee/comics.xml @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/java-ee/config/checkstyle/checkstyle.xml b/java-ee/config/checkstyle/checkstyle.xml new file mode 100644 index 0000000..7c682c3 --- /dev/null +++ b/java-ee/config/checkstyle/checkstyle.xml @@ -0,0 +1,192 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java-ee/config/checkstyle/checkstyle.xsl b/java-ee/config/checkstyle/checkstyle.xsl new file mode 100644 index 0000000..393a01b --- /dev/null +++ b/java-ee/config/checkstyle/checkstyle.xsl @@ -0,0 +1,179 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +

CheckStyle Audit

Designed for use with CheckStyle and Ant.
+
+ + + +
+ + + +
+ + + + + +

+

+ +


+ + + + +
+ + + + +

Files

+ + + + + + + + + + + + + + +
NameErrors
+
+ + + + +

File

+ + + + + + + + + + + + + +
Error DescriptionLine
+ Back to top +
+ + + +

Summary

+ + + + + + + + + + + + +
FilesErrors
+
+ + + + a + b + + +
+ + diff --git a/java-ee/config/findbugs/findbugs.xml b/java-ee/config/findbugs/findbugs.xml new file mode 100644 index 0000000..34a6e01 --- /dev/null +++ b/java-ee/config/findbugs/findbugs.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/java-ee/gradle/wrapper/gradle-wrapper.jar b/java-ee/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..8ba921dbd16c876b27af7388dcbd710bdd096612 GIT binary patch literal 54208 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 \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn ( ) { + echo "$*" +} + +die ( ) { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save ( ) { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/java-ee/gradlew.bat b/java-ee/gradlew.bat new file mode 100755 index 0000000..e95643d --- /dev/null +++ b/java-ee/gradlew.bat @@ -0,0 +1,84 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/java-ee/settings.gradle b/java-ee/settings.gradle new file mode 100755 index 0000000..50ec7b4 --- /dev/null +++ b/java-ee/settings.gradle @@ -0,0 +1,13 @@ +include ':KontorEJB' +include ':KontorWeb' +include ':ComicsImpl' +include ':ComicsWeb' +include ':LibraryImpl' +include ':LibraryWeb' +include ':MedienImpl' +include ':MedienWeb' +include ':TradingCardsImpl' +include ':TradingCardsWeb' +include ':KontorImpl' +include ':KontorWeb' +include ':KontorApp' diff --git a/java/README.md b/java/README.md new file mode 100644 index 0000000..65ed57c --- /dev/null +++ b/java/README.md @@ -0,0 +1,2 @@ +# Kontor Java + diff --git a/java/build.gradle b/java/build.gradle new file mode 100644 index 0000000..1a683be --- /dev/null +++ b/java/build.gradle @@ -0,0 +1,87 @@ +plugins { + id 'application' + id 'jacoco' + id "org.sonarqube" version "3.3" +} + +repositories { + mavenLocal() + mavenCentral() +} + +dependencies { + implementation 'ch.qos.logback:logback-core:1.1.2' + implementation 'ch.qos.logback:logback-classic:1.1.2' + implementation 'org.mongodb.morphia:morphia:1.1.0' + //compile 'org.mongodb:mongodb-driver:3.2.2' + implementation 'org.hibernate:hibernate-core:4.3.8.Final' + implementation 'org.hibernate:hibernate-entitymanager:4.3.8.Final' + implementation 'org.hsqldb:hsqldb:2.3.0' + implementation 'ch.qos.logback:logback-core:1.1.2' + implementation 'ch.qos.logback:logback-classic:1.1.2' + testImplementation("org.junit.jupiter:junit-jupiter:5.8.2") +} + +def MAIN_CLASS_NAME = 'com.ibtp.kontor.KontorApp' + +application { + mainClassName = MAIN_CLASS_NAME +} + +jar { + manifest { + attributes('Implementation-Title': 'Kontor Application', 'Implementation-Version': version, 'Main-Class': MAIN_CLASS_NAME) + } +} + +tasks.named('test') { + useJUnitPlatform() +} + +jacocoTestReport { + reports { + xml.enabled true + } +} + +test.finalizedBy jacocoTestReport + +sonarqube { + properties { + property "sonar.projectKey", "kontor_kontor-java_AX-dd-w3rXuu6JVRvr_g" + property "sonar.host.url", "https://sonar.thpeetz.de" + property "sonar.login", "d39622f640a91f501b1e8a73d7d78c4fc412fc98" + property "sonar.qualitygate.wait", true + property "sonar.sourceEncoding", "UTF-8" + } +} + +tasks.named('sonarqube').configure { + dependsOn test +} + +//tasks.withType(Checkstyle) { +// ignoreFailures = true +// showViolations = false +// configFile = rootProject.file("config/checkstyle/checkstyle.xml") +// reports { +// xml.enabled true +// } +//} + +//tasks.withType(FindBugs) { +// ignoreFailures = true +// reports { +// xml.enabled true +// } +//} + +//pmd { +// ignoreFailures = true +//} + +//build.dependsOn(['jacocoTestReport']) + +wrapper { + gradleVersion = "6.3" +} diff --git a/java/comics.xml b/java/comics.xml new file mode 100644 index 0000000..730fdeb --- /dev/null +++ b/java/comics.xml @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/java/config/checkstyle/checkstyle.xml b/java/config/checkstyle/checkstyle.xml new file mode 100644 index 0000000..7c682c3 --- /dev/null +++ b/java/config/checkstyle/checkstyle.xml @@ -0,0 +1,192 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/config/checkstyle/checkstyle.xsl b/java/config/checkstyle/checkstyle.xsl new file mode 100644 index 0000000..393a01b --- /dev/null +++ b/java/config/checkstyle/checkstyle.xsl @@ -0,0 +1,179 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +

CheckStyle Audit

Designed for use with CheckStyle and Ant.
+
+ + + +
+ + + +
+ + + + + +

+

+ +


+ + + + +
+ + + + +

Files

+ + + + + + + + + + + + + + +
NameErrors
+
+ + + + +

File

+ + + + + + + + + + + + + +
Error DescriptionLine
+ Back to top +
+ + + +

Summary

+ + + + + + + + + + + + +
FilesErrors
+
+ + + + a + b + + +
+ + diff --git a/java/config/findbugs/findbugs.xml b/java/config/findbugs/findbugs.xml new file mode 100644 index 0000000..34a6e01 --- /dev/null +++ b/java/config/findbugs/findbugs.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/java/gradle.properties b/java/gradle.properties new file mode 100644 index 0000000..4facf35 --- /dev/null +++ b/java/gradle.properties @@ -0,0 +1,2 @@ +description = 'Application kontor-java' +version = '1.0.0-SNAPSHOT' diff --git a/java/gradle/wrapper/gradle-wrapper.jar b/java/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..e708b1c023ec8b20f512888fe07c5bd3ff77bb8f GIT binary patch literal 59203 zcma&O1CT9Y(k9%tZQHhO+qUh#ZQHhO+qmuS+qP|E@9xZO?0h@l{(r>DQ>P;GjjD{w zH}lENr;dU&FbEU?00aa80D$0M0RRB{U*7-#kbjS|qAG&4l5%47zyJ#WrfA#1$1Ctx zf&Z_d{GW=lf^w2#qRJ|CvSJUi(^E3iv~=^Z(zH}F)3Z%V3`@+rNB7gTVU{Bb~90p|f+0(v;nz01EG7yDMX9@S~__vVgv%rS$+?IH+oZ03D5zYrv|^ zC1J)SruYHmCki$jLBlTaE5&dFG9-kq3!^i>^UQL`%gn6)jz54$WDmeYdsBE9;PqZ_ zoGd=P4+|(-u4U1dbAVQrFWoNgNd;0nrghPFbQrJctO>nwDdI`Q^i0XJDUYm|T|RWc zZ3^Qgo_Qk$%Fvjj-G}1NB#ZJqIkh;kX%V{THPqOyiq)d)0+(r9o(qKlSp*hmK#iIY zA^)Vr$-Hz<#SF=0@tL@;dCQsm`V9s1vYNq}K1B)!XSK?=I1)tX+bUV52$YQu*0%fnWEukW>mxkz+%3-S!oguE8u#MGzST8_Dy^#U?fA@S#K$S@9msUiX!gd_ow>08w5)nX{-KxqMOo7d?k2&?Vf z&diGDtZr(0cwPe9z9FAUSD9KC)7(n^lMWuayCfxzy8EZsns%OEblHFSzP=cL6}?J| z0U$H!4S_TVjj<`6dy^2j`V`)mC;cB%* z8{>_%E1^FH!*{>4a7*C1v>~1*@TMcLK{7nEQ!_igZC}ikJ$*<$yHy>7)oy79A~#xE zWavoJOIOC$5b6*q*F_qN1>2#MY)AXVyr$6x4b=$x^*aqF*L?vmj>Mgv+|ITnw_BoW zO?jwHvNy^prH{9$rrik1#fhyU^MpFqF2fYEt(;4`Q&XWOGDH8k6M=%@fics4ajI;st# zCU^r1CK&|jzUhRMv;+W~6N;u<;#DI6cCw-otsc@IsN3MoSD^O`eNflIoR~l4*&-%RBYk@gb^|-JXs&~KuSEmMxB}xSb z@K76cXD=Y|=I&SNC2E+>Zg?R6E%DGCH5J1nU!A|@eX9oS(WPaMm==k2s_ueCqdZw| z&hqHp)47`c{BgwgvY2{xz%OIkY1xDwkw!<0veB#yF4ZKJyabhyyVS`gZepcFIk%e2 zTcrmt2@-8`7i-@5Nz>oQWFuMC_KlroCl(PLSodswHqJ3fn<;gxg9=}~3x_L3P`9Sn zChIf}8vCHvTriz~T2~FamRi?rh?>3bX1j}%bLH+uFX+p&+^aXbOK7clZxdU~6Uxgy z8R=obwO4dL%pmVo*Ktf=lH6hnlz_5k3cG;m8lgaPp~?eD!Yn2kf)tU6PF{kLyn|oI@eQ`F z3IF7~Blqg8-uwUuWZScRKn%c2_}dXB6Dx_&xR*n9M9LXasJhtZdr$vBY!rP{c@=)& z#!?L$2UrkvClwQO>U*fSMs67oSj2mxiJ$t;E|>q%Kh_GzzWWO&3;ufU%2z%ucBU8H z3WIwr$n)cfCXR&>tyB7BcSInK>=ByZA%;cVEJhcg<#6N{aZC4>K41XF>ZgjG`z_u& zGY?;Ad?-sgiOnI`oppF1o1Gurqbi*;#x2>+SSV6|1^G@ooVy@fg?wyf@0Y!UZ4!}nGuLeC^l)6pwkh|oRY`s1Pm$>zZ3u-83T|9 zGaKJIV3_x+u1>cRibsaJpJqhcm%?0-L;2 zitBrdRxNmb0OO2J%Y&Ym(6*`_P3&&5Bw157{o7LFguvxC$4&zTy#U=W*l&(Q2MNO} zfaUwYm{XtILD$3864IA_nn34oVa_g^FRuHL5wdUd)+W-p-iWCKe8m_cMHk+=? zeKX)M?Dt(|{r5t7IenkAXo%&EXIb-i^w+0CX0D=xApC=|Xy(`xy+QG^UyFe z+#J6h_&T5i#sV)hj3D4WN%z;2+jJcZxcI3*CHXGmOF3^)JD5j&wfX)e?-|V0GPuA+ zQFot%aEqGNJJHn$!_}#PaAvQ^{3-Ye7b}rWwrUmX53(|~i0v{}G_sI9uDch_brX&6 zWl5Ndj-AYg(W9CGfQf<6!YmY>Ey)+uYd_JNXH=>|`OH-CDCmcH(0%iD_aLlNHKH z7bcW-^5+QV$jK?R*)wZ>r9t}loM@XN&M-Pw=F#xn(;u3!(3SXXY^@=aoj70;_=QE9 zGghsG3ekq#N||u{4We_25U=y#T*S{4I{++Ku)> zQ!DZW;pVcn>b;&g2;YE#+V`v*Bl&Y-i@X6D*OpNA{G@JAXho&aOk(_j^weW{#3X5Y z%$q_wpb07EYPdmyH(1^09i$ca{O<}7) zRWncXdSPgBE%BM#by!E>tdnc$8RwUJg1*x($6$}ae$e9Knj8gvVZe#bLi!<+&BkFj zg@nOpDneyc+hU9P-;jmOSMN|*H#>^Ez#?;%C3hg_65leSUm;iz)UkW)jX#p)e&S&M z1|a?wDzV5NVnlhRBCd_;F87wp>6c<&nkgvC+!@KGiIqWY4l}=&1w7|r6{oBN8xyzh zG$b#2=RJp_iq6)#t5%yLkKx(0@D=C3w+oiXtSuaQ%I1WIb-eiE$d~!)b@|4XLy!CZ z9p=t=%3ad@Ep+<9003D2KZ5VyP~_n$=;~r&YUg5UZ0KVD&tR1DHy9x)qWtKJp#Kq# zP*8p#W(8JJ_*h_3W}FlvRam?<4Z+-H77^$Lvi+#vmhL9J zJ<1SV45xi;SrO2f=-OB(7#iNA5)x1uNC-yNxUw|!00vcW2PufRm>e~toH;M0Q85MQLWd?3O{i8H+5VkR@l9Dg-ma ze2fZ%>G(u5(k9EHj2L6!;(KZ8%8|*-1V|B#EagbF(rc+5iL_5;Eu)L4Z-V;0HfK4d z*{utLse_rvHZeQ>V5H=f78M3Ntg1BPxFCVD{HbNA6?9*^YIq;B-DJd{Ca2L#)qWP? zvX^NhFmX?CTWw&Ns}lgs;r3i+Bq@y}Ul+U%pzOS0Fcv9~aB(0!>GT0)NO?p=25LjN z2bh>6RhgqD7bQj#k-KOm@JLgMa6>%-ok1WpOe)FS^XOU{c?d5shG(lIn3GiVBxmg`u%-j=)^v&pX1JecJics3&jvPI)mDut52? z3jEA)DM%}BYbxxKrizVYwq?(P&19EXlwD9^-6J+4!}9{ywR9Gk42jjAURAF&EO|~N z)?s>$Da@ikI4|^z0e{r`J8zIs>SpM~Vn^{3fArRu;?+43>lD+^XtUcY1HidJwnR6+ z!;oG2=B6Z_=M%*{z-RaHc(n|1RTKQdNjjV!Pn9lFt^4w|AeN06*j}ZyhqZ^!-=cyGP_ShV1rGxkx8t zB;8`h!S{LD%ot``700d0@Grql(DTt4Awgmi+Yr0@#jbe=2#UkK%rv=OLqF)9D7D1j z!~McAwMYkeaL$~kI~90)5vBhBzWYc3Cj1WI0RS`z000R8-@ET0dA~*r(gSiCJmQMN&4%1D zyVNf0?}sBH8zNbBLn>~(W{d3%@kL_eQ6jEcR{l>C|JK z(R-fA!z|TTRG40|zv}7E@PqCAXP3n`;%|SCQ|ZS%ym$I{`}t3KPL&^l5`3>yah4*6 zifO#{VNz3)?ZL$be;NEaAk9b#{tV?V7 zP|wf5YA*1;s<)9A4~l3BHzG&HH`1xNr#%){4xZ!jq%o=7nN*wMuXlFV{HaiQLJ`5G zBhDi#D(m`Q1pLh@Tq+L;OwuC52RdW7b8}~60WCOK5iYMUad9}7aWBuILb({5=z~YF zt?*Jr5NG+WadM{mDL>GyiByCuR)hd zA=HM?J6l1Xv0Dl+LW@w$OTcEoOda^nFCw*Sy^I@$sSuneMl{4ys)|RY#9&NxW4S)9 zq|%83IpslTLoz~&vTo!Ga@?rj_kw{|k{nv+w&Ku?fyk4Ki4I?);M|5Axm)t+BaE)D zm(`AQ#k^DWrjbuXoJf2{Aj^KT zFb1zMSqxq|vceV+Mf-)$oPflsO$@*A0n0Z!R{&(xh8s}=;t(lIy zv$S8x>m;vQNHuRzoaOo?eiWFe{0;$s`Bc+Osz~}Van${u;g(su`3lJ^TEfo~nERfP z)?aFzpDgnLYiERsKPu|0tq4l2wT)Atr6Qb%m-AUn6HnCue*yWICp7TjW$@sO zm5rm4aTcPQ(rfi7a`xP7cKCFrJD}*&_~xgLyr^-bmsL}y;A5P|al8J3WUoBSjqu%v zxC;mK!g(7r6RRJ852Z~feoC&sD3(6}^5-uLK8o)9{8L_%%rItZK9C){UxB|;G>JbP zsRRtS4-3B*5c+K2kvmgZK8472%l>3cntWUOVHxB|{Ay~aOg5RN;{PJgeVD*H%ac+y!h#wi%o2bF2Ca8IyMyH{>4#{E_8u^@+l-+n=V}Sq?$O z{091@v%Bd*3pk0^2UtiF9Z+(a@wy6 zUdw8J*ze$K#=$48IBi1U%;hmhO>lu!uU;+RS}p&6@rQila7WftH->*A4=5W|Fmtze z)7E}jh@cbmr9iup^i%*(uF%LG&!+Fyl@LFA-}Ca#bxRfDJAiR2dt6644TaYw1Ma79 zt8&DYj31j^5WPNf5P&{)J?WlCe@<3u^78wnd(Ja4^a>{^Tw}W>|Cjt^If|7l^l)^Q zbz|7~CF(k_9~n|h;ysZ+jHzkXf(*O*@5m zLzUmbHp=x!Q|!9NVXyipZ3)^GuIG$k;D)EK!a5=8MFLI_lpf`HPKl=-Ww%z8H_0$j ztJ||IfFG1lE9nmQ0+jPQy zCBdKkjArH@K7jVcMNz);Q(Q^R{d5G?-kk;Uu_IXSyWB)~KGIizZL(^&qF;|1PI7!E zTP`%l)gpX|OFn&)M%txpQ2F!hdA~hX1Cm5)IrdljqzRg!f{mN%G~H1&oqe`5eJCIF zHdD7O;AX-{XEV(a`gBFJ9ews#CVS2y!&>Cm_dm3C8*n3MA*e67(WC?uP@8TXuMroq z{#w$%z@CBIkRM7?}Xib+>hRjy?%G!fiw8! z8(gB+8J~KOU}yO7UGm&1g_MDJ$IXS!`+*b*QW2x)9>K~Y*E&bYMnjl6h!{17_8d!%&9D`a7r&LKZjC<&XOvTRaKJ1 zUY@hl5^R&kZl3lU3njk`3dPzxj$2foOL26r(9zsVF3n_F#v)s5vv3@dgs|lP#eylq62{<-vczqP!RpVBTgI>@O6&sU>W|do17+#OzQ7o5A$ICH z?GqwqnK^n2%LR;$^oZM;)+>$X3s2n}2jZ7CdWIW0lnGK-b#EG01)P@aU`pg}th&J-TrU`tIpb5t((0eu|!u zQz+3ZiOQ^?RxxK4;zs=l8q!-n7X{@jSwK(iqNFiRColuEOg}!7cyZi`iBX4g1pNBj zAPzL?P^Ljhn;1$r8?bc=#n|Ed7wB&oHcw()&*k#SS#h}jO?ZB246EGItsz*;^&tzp zu^YJ0=lwsi`eP_pU8}6JA7MS;9pfD;DsSsLo~ogzMNP70@@;Fm8f0^;>$Z>~}GWRw!W5J3tNX*^2+1f3hz{~rIzJo z6W%J(H!g-eI_J1>0juX$X4Cl6i+3wbc~k146UIX&G22}WE>0ga#WLsn9tY(&29zBvH1$`iWtTe zG2jYl@P!P)eb<5DsR72BdI7-zP&cZNI{7q3e@?N8IKc4DE#UVr->|-ryuJXk^u^>4 z$3wE~=q390;XuOQP~TNoDR?#|NSPJ%sTMInA6*rJ%go|=YjGe!B>z6u$IhgQSwoV* zjy3F2#I>uK{42{&IqP59)Y(1*Z>>#W8rCf4_eVsH)`v!P#^;BgzKDR`ARGEZzkNX+ zJUQu=*-ol=Xqqt5=`=pA@BIn@6a9G8C{c&`i^(i+BxQO9?YZ3iu%$$da&Kb?2kCCo zo7t$UpSFWqmydXf@l3bVJ=%K?SSw)|?srhJ-1ZdFu*5QhL$~-IQS!K1s@XzAtv6*Y zl8@(5BlWYLt1yAWy?rMD&bwze8bC3-GfNH=p zynNFCdxyX?K&G(ZZ)afguQ2|r;XoV^=^(;Cku#qYn4Lus`UeKt6rAlFo_rU`|Rq z&G?~iWMBio<78of-2X(ZYHx~=U0Vz4btyXkctMKdc9UM!vYr~B-(>)(Hc|D zMzkN4!PBg%tZoh+=Gba!0++d193gbMk2&krfDgcbx0jI92cq?FFESVg0D$>F+bil} zY~$)|>1HZsX=5sAZ2WgPB5P=8X#TI+NQ(M~GqyVB53c6IdX=k>Wu@A0Svf5#?uHaF zsYn|koIi3$(%GZ2+G+7Fv^lHTb#5b8sAHSTnL^qWZLM<(1|9|QFw9pnRU{svj}_Al zL)b9>fN{QiA($8peNEJyy`(a{&uh-T4_kdZFIVsKKVM(?05}76EEz?#W za^fiZOAd14IJ4zLX-n7Lq0qlQ^lW8Cvz4UKkV9~P}>sq0?xD3vg+$4vLm~C(+ zM{-3Z#qnZ09bJ>}j?6ry^h+@PfaD7*jZxBEY4)UG&daWb??6)TP+|3#Z&?GL?1i+280CFsE|vIXQbm| zM}Pk!U`U5NsNbyKzkrul-DzwB{X?n3E6?TUHr{M&+R*2%yOiXdW-_2Yd6?38M9Vy^ z*lE%gA{wwoSR~vN0=no}tP2Ul5Gk5M(Xq`$nw#ndFk`tcpd5A=Idue`XZ!FS>Q zG^0w#>P4pPG+*NC9gLP4x2m=cKP}YuS!l^?sHSFftZy{4CoQrb_ z^20(NnG`wAhMI=eq)SsIE~&Gp9Ne0nD4%Xiu|0Fj1UFk?6avDqjdXz{O1nKao*46y zT8~iA%Exu=G#{x=KD;_C&M+Zx4+n`sHT>^>=-1YM;H<72k>$py1?F3#T1*ef9mLZw z5naLQr?n7K;2l+{_uIw*_1nsTn~I|kkCgrn;|G~##hM;9l7Jy$yJfmk+&}W@JeKcF zx@@Woiz8qdi|D%aH3XTx5*wDlbs?dC1_nrFpm^QbG@wM=i2?Zg;$VK!c^Dp8<}BTI zyRhAq@#%2pGV49*Y5_mV4+OICP|%I(dQ7x=6Ob}>EjnB_-_18*xrY?b%-yEDT(wrO z9RY2QT0`_OpGfMObKHV;QLVnrK%mc?$WAdIT`kJQT^n%GuzE7|9@k3ci5fYOh(287 zuIbg!GB3xLg$YN=n)^pHGB0jH+_iIiC=nUcD;G6LuJsjn2VI1cyZx=a?ShCsF==QK z;q~*m&}L<-cb+mDDXzvvrRsybcgQ;Vg21P(uLv5I+eGc7o7tc6`;OA9{soHFOz zT~2?>Ts}gprIX$wRBb4yE>ot<8+*Bv`qbSDv*VtRi|cyWS>)Fjs>fkNOH-+PX&4(~ z&)T8Zam2L6puQl?;5zg9h<}k4#|yH9czHw;1jw-pwBM*O2hUR6yvHATrI%^mvs9q_ z&ccT0>f#eDG<^WG^q@oVqlJrhxH)dcq2cty@l3~|5#UDdExyXUmLQ}f4#;6fI{f^t zDCsgIJ~0`af%YR%Ma5VQq-p21k`vaBu6WE?66+5=XUd%Ay%D$irN>5LhluRWt7 zov-=f>QbMk*G##&DTQyou$s7UqjjW@k6=!I@!k+S{pP8R(2=e@io;N8E`EOB;OGoI zw6Q+{X1_I{OO0HPpBz!X!@`5YQ2)t{+!?M_iH25X(d~-Zx~cXnS9z>u?+If|iNJbx zyFU2d1!ITX64D|lE0Z{dLRqL1Ajj=CCMfC4lD3&mYR_R_VZ>_7_~|<^o*%_&jevU+ zQ4|qzci=0}Jydw|LXLCrOl1_P6Xf@c0$ieK2^7@A9UbF{@V_0p%lqW|L?5k>bVM8|p5v&2g;~r>B8uo<4N+`B zH{J)h;SYiIVx@#jI&p-v3dwL5QNV1oxPr8J%ooezTnLW>i*3Isb49%5i!&ac_dEXv zvXmVUck^QHmyrF8>CGXijC_R-y(Qr{3Zt~EmW)-nC!tiH`wlw5D*W7Pip;T?&j%kX z6DkZX4&}iw>hE(boLyjOoupf6JpvBG8}jIh!!VhnD0>}KSMMo{1#uU6kiFcA04~|7 zVO8eI&x1`g4CZ<2cYUI(n#wz2MtVFHx47yE5eL~8bot~>EHbevSt}LLMQX?odD{Ux zJMnam{d)W4da{l7&y-JrgiU~qY3$~}_F#G7|MxT)e;G{U`In&?`j<5D->}cb{}{T(4DF0BOk-=1195KB-E*o@c?`>y#4=dMtYtSY=&L{!TAjFVcq0y@AH`vH! z$41+u!Ld&}F^COPgL(EE{0X7LY&%D7-(?!kjFF7=qw<;`V{nwWBq<)1QiGJgUc^Vz ztMUlq1bZqKn17|6x6iAHbWc~l1HcmAxr%$Puv!znW)!JiukwIrqQ00|H$Z)OmGG@= zv%A8*4cq}(?qn4rN6o`$Y))(MyXr8R<2S^J+v(wmFmtac!%VOfN?&(8Nr!T@kV`N; z*Q33V3t`^rN&aBiHet)18wy{*wi1=W!B%B-Q6}SCrUl$~Hl{@!95ydml@FK8P=u4s z4e*7gV2s=YxEvskw2Ju!2%{8h01rx-3`NCPc(O zH&J0VH5etNB2KY6k4R@2Wvl^Ck$MoR3=)|SEclT2ccJ!RI9Nuter7u9@;sWf-%um;GfI!=eEIQ2l2p_YWUd{|6EG ze{yO6;lMc>;2tPrsNdi@&1K6(1;|$xe8vLgiouj%QD%gYk`4p{Ktv9|j+!OF-P?@p z;}SV|oIK)iwlBs+`ROXkhd&NK zzo__r!B>tOXpBJMDcv!Mq54P+n4(@dijL^EpO1wdg~q+!DT3lB<>9AANSe!T1XgC=J^)IP0XEZ()_vpu!!3HQyJhwh?r`Ae%Yr~b% zO*NY9t9#qWa@GCPYOF9aron7thfWT`eujS4`t2uG6)~JRTI;f(ZuoRQwjZjp5Pg34 z)rp$)Kr?R+KdJ;IO;pM{$6|2y=k_siqvp%)2||cHTe|b5Ht8&A{wazGNca zX$Ol?H)E_R@SDi~4{d-|8nGFhZPW;Cts1;08TwUvLLv&_2$O6Vt=M)X;g%HUr$&06 zISZb(6)Q3%?;3r~*3~USIg=HcJhFtHhIV(siOwV&QkQe#J%H9&E21!C*d@ln3E@J* zVqRO^<)V^ky-R|%{(9`l-(JXq9J)1r$`uQ8a}$vr9E^nNiI*thK8=&UZ0dsFN_eSl z(q~lnD?EymWLsNa3|1{CRPW60>DSkY9YQ;$4o3W7Ms&@&lv9eH!tk~N&dhqX&>K@} zi1g~GqglxkZ5pEFkllJ)Ta1I^c&Bt6#r(QLQ02yHTaJB~- zCcE=5tmi`UA>@P=1LBfBiqk)HB4t8D?02;9eXj~kVPwv?m{5&!&TFYhu>3=_ zsGmYZ^mo*-j69-42y&Jj0cBLLEulNRZ9vXE)8~mt9C#;tZs;=#M=1*hebkS;7(aGf zcs7zH(I8Eui9UU4L--))yy`&d&$In&VA2?DAEss4LAPCLd>-$i?lpXvn!gu^JJ$(DoUlc6wE98VLZ*z`QGQov5l4Fm_h?V-;mHLYDVOwKz7>e4+%AzeO>P6v}ndPW| zM>m#6Tnp7K?0mbK=>gV}=@k*0Mr_PVAgGMu$j+pWxzq4MAa&jpCDU&-5eH27Iz>m^ zax1?*HhG%pJ((tkR(V(O(L%7v7L%!_X->IjS3H5kuXQT2!ow(;%FDE>16&3r){!ex zhf==oJ!}YU89C9@mfDq!P3S4yx$aGB?rbtVH?sHpg?J5C->!_FHM%Hl3#D4eplxzQ zRA+<@LD%LKSkTk2NyWCg7u=$%F#;SIL44~S_OGR}JqX}X+=bc@swpiClB`Zbz|f!4 z7Ysah7OkR8liXfI`}IIwtEoL}(URrGe;IM8%{>b1SsqXh)~w}P>yiFRaE>}rEnNkT z!HXZUtxUp1NmFm)Dm@-{FI^aRQqpSkz}ZSyKR%Y}YHNzBk)ZIp} zMtS=aMvkgWKm9&oTcU0?S|L~CDqA+sHpOxwnswF-fEG)cXCzUR?ps@tZa$=O)=L+5 zf%m58cq8g_o}3?Bhh+c!w4(7AjxwQ3>WnVi<{{38g7yFboo>q|+7qs<$8CPXUFAN< zG&}BHbbyQ5n|qqSr?U~GY{@GJ{(Jny{bMaOG{|IkUj7tj^9pa9|FB_<+KHLxSxR;@ zHpS$4V)PP+tx}22fWx(Ku9y+}Ap;VZqD0AZW4gCDTPCG=zgJmF{|x;(rvdM|2|9a}cex6xrMkERnkE;}jvU-kmzd%_J50$M`lIPCKf+^*zL=@LW`1SaEc%=m zQ+lT06Gw+wVwvQ9fZ~#qd430v2HndFsBa9WjD0P}K(rZYdAt^5WQIvb%D^Q|pkVE^ zte$&#~zmULFACGfS#g=2OLOnIf2Of-k!(BIHjs77nr!5Q1*I9 z1%?=~#Oss!rV~?-6Gm~BWJiA4mJ5TY&iPm_$)H1_rTltuU1F3I(qTQ^U$S>%$l z)Wx1}R?ij0idp@8w-p!Oz{&*W;v*IA;JFHA9%nUvVDy7Q8woheC#|8QuDZb-L_5@R zOqHwrh|mVL9b=+$nJxM`3eE{O$sCt$UK^2@L$R(r^-_+z?lOo+me-VW=Zw z-Bn>$4ovfWd%SPY`ab-u9{INc*k2h+yH%toDHIyqQ zO68=u`N}RIIs7lsn1D){)~%>ByF<>i@qFb<-axvu(Z+6t7v<^z&gm9McRB~BIaDn$ z#xSGT!rzgad8o>~kyj#h1?7g96tOcCJniQ+*#=b7wPio>|6a1Z?_(TS{)KrPe}(8j z!#&A=k(&Pj^F;r)CI=Z{LVu>uj!_W1q4b`N1}E(i%;BWjbEcnD=mv$FL$l?zS6bW!{$7j1GR5ocn94P2u{ z70tAAcpqtQo<@cXw~@i-@6B23;317|l~S>CB?hR5qJ%J3EFgyBdJd^fHZu7AzHF(BQ!tyAz^L0`X z23S4Fe{2X$W0$zu9gm%rg~A>ijaE#GlYlrF9$ds^QtaszE#4M(OLVP2O-;XdT(XIC zatwzF*)1c+t~c{L=fMG8Z=k5lv>U0;C{caN1NItnuSMp)6G3mbahu>E#sj&oy94KC zpH}8oEw{G@N3pvHhp{^-YaZeH;K+T_1AUv;IKD<=mv^&Ueegrb!yf`4VlRl$M?wsl zZyFol(2|_QM`e_2lYSABpKR{{NlxlDSYQNkS;J66aT#MSiTx~;tUmvs-b*CrR4w=f z8+0;*th6kfZ3|5!Icx3RV11sp=?`0Jy3Fs0N4GZQMN=8HmT6%x9@{Dza)k}UwL6JT zHRDh;%!XwXr6yuuy`4;Xsn0zlR$k%r%9abS1;_v?`HX_hI|+EibVnlyE@3aL5vhQq zlIG?tN^w@0(v9M*&L+{_+RQZw=o|&BRPGB>e5=ys7H`nc8nx)|-g;s7mRc7hg{GJC zAe^vCIJhajmm7C6g! zL&!WAQ~5d_5)00?w_*|*H>3$loHrvFbitw#WvLB!JASO?#5Ig5$Ys10n>e4|3d;tS zELJ0|R4n3Az(Fl3-r^QiV_C;)lQ1_CW{5bKS15U|E9?ZgLec@%kXr84>5jV2a5v=w z?pB1GPdxD$IQL4)G||B_lI+A=08MUFFR4MxfGOu07vfIm+j=z9tp~5i_6jb`tR>qV z$#`=BQ*jpCjm$F0+F)L%xRlnS%#&gro6PiRfu^l!EVan|r3y}AHJQOORGx4~ z&<)3=K-tx518DZyp%|!EqpU!+X3Et7n2AaC5(AtrkW>_57i}$eqs$rupubg0a1+WO zGHZKLN2L0D;ab%{_S1Plm|hx8R?O14*w*f&2&bB050n!R2by zw!@XOQx$SqZ5I<(Qu$V6g>o#A!JVwErWv#(Pjx=KeS0@hxr4?13zj#oWwPS(7Ro|v z>Mp@Kmxo79q|}!5qtX2-O@U&&@6s~!I&)1WQIl?lTnh6UdKT_1R640S4~f=_xoN3- zI+O)$R@RjV$F=>Ti7BlnG1-cFKCC(t|Qjm{SalS~V-tX#+2ekRhwmN zZr`8{QF6y~Z!D|{=1*2D-JUa<(1Z=;!Ei!KiRNH?o{p5o3crFF=_pX9O-YyJchr$~ zRC`+G+8kx~fD2k*ZIiiIGR<8r&M@3H?%JVOfE>)})7ScOd&?OjgAGT@WVNSCZ8N(p zuQG~76GE3%(%h1*vUXg$vH{ua0b`sQ4f0*y=u~lgyb^!#CcPJa2mkSEHGLsnO^kb$ zru5_l#nu=Y{rSMWiYx?nO{8I!gH+?wEj~UM?IrG}E|bRIBUM>UlY<`T1EHpRr36vv zBi&dG8oxS|J$!zoaq{+JpJy+O^W(nt*|#g32bd&K^w-t>!Vu9N!k9eA8r!Xc{utY> zg9aZ(D2E0gL#W0MdjwES-7~Wa8iubPrd?8-$C4BP?*wok&O8+ykOx{P=Izx+G~hM8 z*9?BYz!T8~dzcZr#ux8kS7u7r@A#DogBH8km8Ry4slyie^n|GrTbO|cLhpqgMdsjX zJ_LdmM#I&4LqqsOUIXK8gW;V0B(7^$y#h3h>J0k^WJfAMeYek%Y-Dcb_+0zPJez!GM zAmJ1u;*rK=FNM0Nf}Y!!P9c4)HIkMnq^b;JFd!S3?_Qi2G#LIQ)TF|iHl~WKK6JmK zbv7rPE6VkYr_%_BT}CK8h=?%pk@3cz(UrZ{@h40%XgThP*-Oeo`T0eq9 zA8BnWZKzCy5e&&_GEsU4*;_k}(8l_&al5K-V*BFM=O~;MgRkYsOs%9eOY6s6AtE*<7GQAR2ulC3RAJrG_P1iQK5Z~&B z&f8X<>yJV6)oDGIlS$Y*D^Rj(cszTy5c81a5IwBr`BtnC6_e`ArI8CaTX_%rx7;cn zR-0?J_LFg*?(#n~G8cXut(1nVF0Oka$A$1FGcERU<^ggx;p@CZc?3UB41RY+wLS`LWFNSs~YP zuw1@DNN3lTd|jDL7gjBsd9}wIw}4xT2+8dBQzI00m<@?c2L%>}QLfK5%r!a-iII`p zX@`VEUH)uj^$;7jVUYdADQ2k*!1O3WdfgF?OMtUXNpQ1}QINamBTKDuv19^{$`8A1 zeq%q*O0mi@(%sZU>Xdb0Ru96CFqk9-L3pzLVsMQ`Xpa~N6CR{9Rm2)A|CI21L(%GW zh&)Y$BNHa=FD+=mBw3{qTgw)j0b!Eahs!rZnpu)z!!E$*eXE~##yaXz`KE5(nQM`s zD!$vW9XH)iMxu9R>r$VlLk9oIR%HxpUiW=BK@4U)|1WNQ=mz9a z^!KkO=>GaJ!GBXm{KJj^;kh-MkUlEQ%lza`-G&}C5y1>La1sR6hT=d*NeCnuK%_LV zOXt$}iP6(YJKc9j-Fxq~*ItVUqljQ8?oaysB-EYtFQp9oxZ|5m0^Hq(qV!S+hq#g( z?|i*H2MIr^Kxgz+3vIljQ*Feejy6S4v~jKEPTF~Qhq!(ms5>NGtRgO5vfPPc4Z^AM zTj!`5xEreIN)vaNxa|q6qWdg>+T`Ol0Uz)ckXBXEGvPNEL3R8hB3=C5`@=SYgAju1 z!)UBr{2~=~xa{b8>x2@C7weRAEuatC)3pkRhT#pMPTpSbA|tan%U7NGMvzmF?c!V8 z=pEWxbdXbTAGtWTyI?Fml%lEr-^AE}w#l(<7OIw;ctw}imYax&vR4UYNJZK6P7ZOd zP87XfhnUHxCUHhM@b*NbTi#(-8|wcv%3BGNs#zRCVV(W?1Qj6^PPQa<{yaBwZ`+<`w|;rqUY_C z&AeyKwwf*q#OW-F()lir=T^<^wjK65Lif$puuU5+tk$;e_EJ;Lu+pH>=-8=PDhkBg z8cWt%@$Sc#C6F$Vd+0507;{OOyT7Hs%nKS88q-W!$f~9*WGBpHGgNp}=C*7!RiZ5s zn1L_DbKF@B8kwhDiLKRB@lsXVVLK|ph=w%_`#owlf@s@V(pa`GY$8h%;-#h@TsO|Y8V=n@*!Rog7<7Cid%apR|x zOjhHCyfbIt%+*PCveTEcuiDi%Wx;O;+K=W?OFUV%)%~6;gl?<0%)?snDDqIvkHF{ zyI02)+lI9ov42^hL>ZRrh*HhjF9B$A@=H94iaBESBF=eC_KT$8A@uB^6$~o?3Wm5t1OIaqF^~><2?4e3c&)@wKn9bD? zoeCs;H>b8DL^F&>Xw-xjZEUFFTv>JD^O#1E#)CMBaG4DX9bD(Wtc8Rzq}9soQ8`jf zeSnHOL}<+WVSKp4kkq&?SbETjq6yr@4%SAqOG=9E(3YeLG9dtV+8vmzq+6PFPk{L; z(&d++iu=^F%b+ea$i2UeTC{R*0Isk;vFK!no<;L+(`y`3&H-~VTdKROkdyowo1iqR zbVW(3`+(PQ2>TKY>N!jGmGo7oeoB8O|P_!Ic@ zZ^;3dnuXo;WJ?S+)%P>{Hcg!Jz#2SI(s&dY4QAy_vRlmOh)QHvs_7c&zkJCmJGVvV zX;Mtb>QE+xp`KyciG$Cn*0?AK%-a|=o!+7x&&yzHQOS>8=B*R=niSnta^Pxp1`=md z#;$pS$4WCT?mbiCYU?FcHGZ#)kHVJTTBt^%XE(Q};aaO=Zik0UgLcc0I(tUpt(>|& zcxB_|fxCF7>&~5eJ=Dpn&5Aj{A^cV^^}(7w#p;HG&Q)EaN~~EqrE1qKrMAc&WXIE;>@<&)5;gD2?={Xf@Mvn@OJKw=8Mgn z!JUFMwD+s==JpjhroT&d{$kQAy%+d`a*XxDEVxy3`NHzmITrE`o!;5ClXNPb4t*8P zzAivdr{j_v!=9!^?T3y?gzmqDWX6mkzhIzJ-3S{T5bcCFMr&RPDryMcdwbBuZbsgN zGrp@^i?rcfN7v0NKGzDPGE#4yszxu=I_`MI%Z|10nFjU-UjQXXA?k8Pk|OE<(?ae) zE%vG#eZAlj*E7_3dx#Zz4kMLj>H^;}33UAankJiDy5ZvEhrjr`!9eMD8COp}U*hP+ zF}KIYx@pkccIgyxFm#LNw~G&`;o&5)2`5aogs`1~7cMZQ7zj!%L4E`2yzlQN6REX20&O<9 zKV6fyr)TScJPPzNTC2gL+0x#=u>(({{D7j)c-%tvqls3#Y?Z1m zV5WUE)zdJ{$p>yX;^P!UcXP?UD~YM;IRa#Rs5~l+*$&nO(;Ers`G=0D!twR(0GF@c zHl9E5DQI}Oz74n zfKP>&$q0($T4y$6w(p=ERAFh+>n%iaeRA%!T%<^+pg?M)@ucY<&59$x9M#n+V&>}=nO9wCV{O~lg&v#+jcUj(tQ z`0u1YH)-`U$15a{pBkGyPL0THv1P|4e@pf@3IBZS4dVJPo#H>pWq%Lr0YS-SeWash z8R7=jb28KPMI|_lo#GEO|5B?N_e``H*23{~a!AmUJ+fb4HX-%QI@lSEUxKlGV7z7Q zSKw@-TR>@1RL%w{x}dW#k1NgW+q4yt2Xf1J62Bx*O^WG8OJ|FqI4&@d3_o8Id@*)4 zYrk=>@!wv~mh7YWv*bZhxqSmFh2Xq)o=m;%n$I?GSz49l1$xRpPu_^N(vZ>*>Z<04 z2+rP70oM=NDysd!@fQdM2OcyT?3T^Eb@lIC-UG=Bw{BjQ&P`KCv$AcJ;?`vdZ4){d z&gkoUK{$!$$K`3*O-jyM1~p-7T*qb)Ys>Myt^;#1&a%O@x8A+E>! zY8=eD`ZG)LVagDLBeHg>=atOG?Kr%h4B%E6m@J^C+U|y)XX@f z8oyJDW|9g=<#f<{JRr{y#~euMnv)`7j=%cHWLc}ngjq~7k**6%4u>Px&W%4D94(r* z+akunK}O0DC2A%Xo9jyF;DobX?!1I(7%}@7F>i%&nk*LMO)bMGg2N+1iqtg+r(70q zF5{Msgsm5GS7DT`kBsjMvOrkx&|EU!{{~gL4d2MWrAT=KBQ-^zQCUq{5PD1orxlIL zq;CvlWx#f1NWvh`hg011I%?T_s!e38l*lWVt|~z-PO4~~1g)SrJ|>*tXh=QfXT)%( z+ex+inPvD&O4Ur;JGz>$sUOnWdpSLcm1X%aQDw4{dB!cnj`^muI$CJ2%p&-kULVCE z>$eMR36kN$wCPR+OFDM3-U(VOrp9k3)lI&YVFqd;Kpz~K)@Fa&FRw}L(SoD z9B4a+hQzZT-BnVltst&=kq6Y(f^S4hIGNKYBgMxGJ^;2yrO}P3;r)(-I-CZ)26Y6? z&rzHI_1GCvGkgy-t1E;r^3Le30|%$ebDRu2+gdLG)r=A~Qz`}~&L@aGJ{}vVs_GE* zVUjFnzHiXfKQbpv&bR&}l2bzIjAooB)=-XNcYmrGmBh(&iu@o!^hn0^#}m2yZZUK8 zufVm7Gq0y`Mj;9b>`c?&PZkU0j4>IL=UL&-Lp3j&47B5pAW4JceG{!XCA)kT<%2nqCxj<)uy6XR_uws~>_MEKPOpAQ!H zkn>FKh)<9DwwS*|Y(q?$^N!6(51O0 z^JM~Ax{AI1Oj$fs-S5d4T7Z_i1?{%0SsIuQ&r8#(JA=2iLcTN+?>wOL532%&dMYkT z*T5xepC+V6zxhS@vNbMoi|i)=rpli@R9~P!39tWbSSb904ekv7D#quKbgFEMTb48P zuq(VJ+&L8aWU(_FCD$3^uD!YM%O^K(dvy~Wm2hUuh6bD|#(I39Xt>N1Y{ZqXL`Fg6 zKQ?T2htHN!(Bx;tV2bfTtIj7e)liN-29s1kew>v(D^@)#v;}C4-G=7x#;-dM4yRWm zyY`cS21ulzMK{PoaQ6xChEZ}o_#}X-o}<&0)$1#3we?+QeLt;aVCjeA)hn!}UaKt< zat1fHEx13y-rXNMvpUUmCVzocPmN~-Y4(YJvQ#db)4|%B!rBsgAe+*yor~}FrNH08 z3V!97S}D7d$zbSD{$z;@IYMxM6aHdypIuS*pr_U6;#Y!_?0i|&yU*@16l z*dcMqDQgfNBf}?quiu4e>H)yTVfsp#f+Du0@=Kc41QockXkCkvu>FBd6Q+@FL!(Yx z2`YuX#eMEiLEDhp+9uFqME_E^faV&~9qjBHJkIp~%$x^bN=N)K@kvSVEMdDuzA0sn z88CBG?`RX1@#hQNd`o^V{37)!w|nA)QfiYBE^m=yQKv-fQF+UCMcuEe1d4BH7$?>b zJl-r9@0^Ie=)guO1vOd=i$_4sz>y3x^R7n4ED!5oXL3@5**h(xr%Hv)_gILarO46q+MaDOF%ChaymKoI6JU5Pg;7#2n9-18|S1;AK+ zgsn6;k6-%!QD>D?cFy}8F;r@z8H9xN1jsOBw2vQONVqBVEbkiNUqgw~*!^##ht>w0 zUOykwH=$LwX2j&nLy=@{hr)2O&-wm-NyjW7n~Zs9UlH;P7iP3 zI}S(r0YFVYacnKH(+{*)Tbw)@;6>%=&Th=+Z6NHo_tR|JCI8TJiXv2N7ei7M^Q+RM z?9o`meH$5Yi;@9XaNR#jIK^&{N|DYNNbtdb)XW1Lv2k{E>;?F`#Pq|&_;gm~&~Zc9 zf+6ZE%{x4|{YdtE?a^gKyzr}dA>OxQv+pq|@IXL%WS0CiX!V zm$fCePA%lU{%pTKD7|5NJHeXg=I0jL@$tOF@K*MI$)f?om)D63K*M|r`gb9edD1~Y zc|w7N)Y%do7=0{RC|AziW7#am$)9jciRJ?IWl9PE{G3U+$%FcyKs_0Cgq`=K3@ttV z9g;M!3z~f_?P%y3-ph%vBMeS@p7P&Ea8M@97+%XEj*(1E6vHj==d zjsoviB>j^$_^OI_DEPvFkVo(BGRo%cJeD){6Uckei=~1}>sp299|IRjhXe)%?uP0I zF5+>?0#Ye}T^Y$u_rc4=lPcq4K^D(TZG-w30-YiEM=dcK+4#o*>lJ8&JLi+3UcpZk z!^?95S^C0ja^jwP`|{<+3cBVog$(mRdQmadS+Vh~z zS@|P}=|z3P6uS+&@QsMp0no9Od&27O&14zHXGAOEy zh~OKpymK5C%;LLb467@KgIiVwYbYd6wFxI{0-~MOGfTq$nBTB!{SrWmL9Hs}C&l&l#m?s*{tA?BHS4mVKHAVMqm63H<|c5n0~k)-kbg zXidai&9ZUy0~WFYYKT;oe~rytRk?)r8bptITsWj(@HLI;@=v5|XUnSls7$uaxFRL+ zRVMGuL3w}NbV1`^=Pw*0?>bm8+xfeY(1PikW*PB>>Tq(FR`91N0c2&>lL2sZo5=VD zQY{>7dh_TX98L2)n{2OV=T10~*YzX27i2Q7W86M4$?gZIXZaBq#sA*{PH8){|GUi;oM>e?ua7eF4WFuFYZSG| zze?srg|5Ti8Og{O zeFxuw9!U+zhyk?@w zjsA6(oKD=Ka;A>Ca)oPORxK+kxH#O@zhC!!XS4@=swnuMk>t+JmLmFiE^1aX3f<)D@`%K0FGK^gg1a1j>zi z2KhV>sjU7AX3F$SEqrXSC}fRx64GDoc%!u2Yag68Lw@w9v;xOONf@o)Lc|Uh3<21ctTYu-mFZuHk*+R{GjXHIGq3p)tFtQp%TYqD=j1&y)>@zxoxUJ!G@ zgI0XKmP6MNzw>nRxK$-Gbzs}dyfFzt>#5;f6oR27ql!%+{tr+(`(>%51|k`ML} zY4eE)Lxq|JMas(;JibNQds1bUB&r}ydMQXBY4x(^&fY_&LlQC)3hylc$~8&~|06-D z#T+%66rYbHX%^KuqJED_wuGB+=h`nWA!>1n0)3wZrBG3%`b^Ozv6__dNa@%V14|!D zQ?o$z5u0^8`giv%qE!BzZ!3j;BlDlJDk)h@9{nSQeEk!z9RGW) z${RSF3phEM*ce*>Xdp}585vj$|40=&S{S-GTiE?Op*vY&Lvr9}BO$XWy80IF+6@%n z5*2ueT_g@ofP#u5pxb7n*fv^Xtt7&?SRc{*2Ka-*!BuOpf}neHGCiHy$@Ka1^Dint z;DkmIL$-e)rj4o2WQV%Gy;Xg(_Bh#qeOsTM2f@KEe~4kJ8kNLQ+;(!j^bgJMcNhvklP5Z6I+9Fq@c&D~8Fb-4rmDT!MB5QC{Dsb;BharP*O;SF4& zc$wj-7Oep7#$WZN!1nznc@Vb<_Dn%ga-O#J(l=OGB`dy=Sy&$(5-n3zzu%d7E#^8`T@}V+5B;PP8J14#4cCPw-SQTdGa2gWL0*zKM z#DfSXs_iWOMt)0*+Y>Lkd=LlyoHjublNLefhKBv@JoC>P7N1_#> zv=mLWe96%EY;!ZGSQDbZWb#;tzqAGgx~uk+-$+2_8U`!ypbwXl z^2E-FkM1?lY@yt8=J3%QK+xaZ6ok=-y%=KXCD^0r!5vUneW>95PzCkOPO*t}p$;-> ze5j-BLT_;)cZQzR2CEsm@rU7GZfFtdp*a|g4wDr%8?2QkIGasRfDWT-Dvy*U{?IHT z*}wGnzdlSptl#ZF^sf)KT|BJs&kLG91^A6ls{CzFprZ6-Y!V0Xysh%9p%iMd7HLsS zN+^Un$tDV)T@i!v?3o0Fsx2qI(AX_$dDkBzQ@fRM%n zRXk6hb9Py#JXUs+7)w@eo;g%QQ95Yq!K_d=z{0dGS+pToEI6=Bo8+{k$7&Z zo4>PH(`ce8E-Ps&uv`NQ;U$%t;w~|@E3WVOCi~R4oj5wP?%<*1C%}Jq%a^q~T7u>K zML5AKfQDv6>PuT`{SrKHRAF+^&edg6+5R_#H?Lz3iGoWo#PCEd0DS;)2U({{X#zU^ zw_xv{4x7|t!S)>44J;KfA|DC?;uQ($l+5Vp7oeqf7{GBF9356nx|&B~gs+@N^gSdd zvb*>&W)|u#F{Z_b`f#GVtQ`pYv3#||N{xj1NgB<#=Odt6{eB%#9RLt5v zIi|0u70`#ai}9fJjKv7dE!9ZrOIX!3{$z_K5FBd-Kp-&e4(J$LD-)NMTp^_pB`RT; zftVVlK2g@+1Ahv2$D){@Y#cL#dUj9*&%#6 zd2m9{1NYp>)6=oAvqdCn5#cx{AJ%S8skUgMglu2*IAtd+z1>B&`MuEAS(D(<6X#Lj z?f4CFx$)M&$=7*>9v1ER4b6!SIz-m0e{o0BfkySREchp?WdVPpQCh!q$t>?rL!&Jg zd#heM;&~A}VEm8Dvy&P|J*eAV&w!&Nx6HFV&B8jJFVTmgLaswn!cx$&%JbTsloz!3 zMEz1d`k==`Ueub_JAy_&`!ogbwx27^ZXgFNAbx=g_I~5nO^r)}&myw~+yY*cJl4$I znNJ32M&K=0(2Dj_>@39`3=FX!v3nZHno_@q^!y}%(yw0PqOo=);6Y@&ylVe>nMOZ~ zd>j#QQSBn3oaWd;qy$&5(5H$Ayi)0haAYO6TH>FR?rhqHmNOO+(})NB zLI@B@v0)eq!ug`>G<@htRlp3n!EpU|n+G+AvXFrWSUsLMBfL*ZB`CRsIVHNTR&b?K zxBgsN0BjfB>UVcJ|x%=-zb%OV7lmZc& zxiupadZVF7)6QuhoY;;FK2b*qL0J-Rn-8!X4ZY$-ZSUXV5DFd7`T41c(#lAeLMoeT z4%g655v@7AqT!i@)Edt5JMbN(=Q-6{=L4iG8RA%}w;&pKmtWvI4?G9pVRp|RTw`g0 zD5c12B&A2&P6Ng~8WM2eIW=wxd?r7A*N+&!Be7PX3s|7~z=APxm=A?5 zt>xB4WG|*Td@VX{Rs)PV0|yK`oI3^xn(4c_j&vgxk_Y3o(-`_5o`V zRTghg6%l@(qodXN;dB#+OKJEEvhfcnc#BeO2|E(5df-!fKDZ!%9!^BJ_4)9P+9Dq5 zK1=(v?KmIp34r?z{NEWnLB3Px{XYwy-akun4F7xTRr2^zeYW{gcK9)>aJDdU5;w5@ zak=<+-PLH-|04pelTb%ULpuuuJC7DgyT@D|p{!V!0v3KpDnRjANN12q6SUR3mb9<- z>2r~IApQGhstZ!3*?5V z8#)hJ0TdZg0M-BK#nGFP>$i=qk82DO z7h;Ft!D5E15OgW)&%lej*?^1~2=*Z5$2VX>V{x8SC+{i10BbtUk9@I#Vi&hX)q
Q!LwySI{Bnv%Sm)yh{^sSVJ8&h_D-BJ_YZe5eCaAWU9b$O2c z$T|{vWVRtOL!xC0DTc(Qbe`ItNtt5hr<)VijD0{U;T#bUEp381_y`%ZIav?kuYG{iyYdEBPW=*xNSc;Rlt6~F4M`5G+VtOjc z*0qGzCb@gME5udTjJA-9O<&TWd~}ysBd(eVT1-H82-doyH9RST)|+Pb{o*;$j9Tjs zhU!IlsPsj8=(x3bAKJTopW3^6AKROHR^7wZ185wJGVhA~hEc|LP;k7NEz-@4p5o}F z`AD6naG3(n=NF9HTH81=F+Q|JOz$7wm9I<+#BSmB@o_cLt2GkW9|?7mM;r!JZp89l zbo!Hp8=n!XH1{GwaDU+k)pGp`C|cXkCU5%vcH)+v@0eK>%7gWxmuMu9YLlChA|_D@ zi#5zovN_!a-0?~pUV-Rj*1P)KwdU-LguR>YM&*Nen+ln8Q$?WFCJg%DY%K}2!!1FE zDv-A%Cbwo^p(lzac&_TZ-l#9kq`mhLcY3h9ZTUVCM(Ad&=EriQY5{jJv<5K&g|*Lk zgV%ILnf1%8V2B0E&;Sp4sYbYOvvMebLwYwzkRQ#F8GpTQq#uv=J`uaSJ34OWITeSGo6+-8Xw znCk*n{kdDEi)Hi&u^)~cs@iyCkFWB2SWZU|Uc%^43ZIZQ-vWNExCCtDWjqHs;;tWf$v{}0{p0Rvxkq``)*>+Akq%|Na zA`@~-Vfe|+(AIlqru+7Ceh4nsVmO9p9jc8}HX^W&ViBDXT+uXbT#R#idPn&L>+#b6 zflC-4C5-X;kUnR~L>PSLh*gvL68}RBsu#2l`s_9KjUWRhiqF`j)`y`2`YU(>3bdBj z?>iyjEhe-~$^I5!nn%B6Wh+I`FvLNvauve~eX<+Ipl&04 zT}};W&1a3%W?dJ2=N#0t?e+aK+%t}5q%jSLvp3jZ%?&F}nOOWr>+{GFIa%wO_2`et z=JzoRR~}iKuuR+azPI8;Gf9)z3kyA4EIOSl!sRR$DlW}0>&?GbgPojmjmnln;cTqCt=ADbE zZ8GAnoM+S1(5$i8^O4t`ue;vO4i}z0wz-QEIVe5_u03;}-!G1NyY8;h^}y;tzY}i5 zqQr#Ur3Fy8sSa$Q0ys+f`!`+>9WbvU_I`Sj;$4{S>O3?#inLHCrtLy~!s#WXV=oVP zeE93*Nc`PBi4q@%Ao$x4lw9vLHM!6mn3-b_cebF|n-2vt-zYVF_&sDE--J-P;2WHo z+@n2areE0o$LjvjlV2X7ZU@j+`{*8zq`JR3gKF#EW|#+{nMyo-a>nFFTg&vhyT=b} zDa8+v0(Dgx0yRL@ZXOYIlVSZ0|MFizy0VPW8;AfA5|pe!#j zX}Py^8fl5SyS4g1WSKKtnyP+_PoOwMMwu`(i@Z)diJp~U54*-miOchy7Z35eL>^M z4p<-aIxH4VUZgS783@H%M7P9hX>t{|RU7$n4T(brCG#h9e9p! z+o`i;EGGq3&pF;~5V~eBD}lC)>if$w%Vf}AFxGqO88|ApfHf&Bvu+xdG)@vuF}Yvk z)o;~k-%+0K0g+L`Wala!$=ZV|z$e%>f0%XoLib%)!R^RoS+{!#X?h-6uu zF&&KxORdZU&EwQFITIRLo(7TA3W}y6X{?Y%y2j0It!ekU#<)$qghZtpcS>L3uh`Uj z7GY;6f$9qKynP#oS3$$a{p^{D+0oJQ71`1?OAn_m8)UGZmj3l*ZI)`V-a>MKGGFG< z&^jg#Ok%(hhm>hSrZ5;Qga4u(?^i>GiW_j9%_7M>j(^|Om$#{k+^*ULnEgzW_1gCICtAD^WpC`A z{9&DXkG#01Xo)U$OC(L5Y$DQ|Q4C6CjUKk1UkPj$nXH##J{c8e#K|&{mA*;b$r0E4 zUNo0jthwA(c&N1l=PEe8Rw_8cEl|-eya9z&H3#n`B$t#+aJ03RFMzrV@gowbe8v(c zIFM60^0&lCFO10NU4w@|61xiZ4CVXeaKjd;d?sv52XM*lS8XiVjgWpRB;&U_C0g+`6B5V&w|O6B*_q zsATxL!M}+$He)1eOWECce#eS@2n^xhlB4<_Nn?yCVEQWDs(r`|@2GqLe<#(|&P0U? z$7V5IgpWf09uIf_RazRwC?qEqRaHyL?iiS05UiGesJy%^>-C{{ypTBI&B0-iUYhk> zIk<5xpsuV@g|z(AZD+C-;A!fTG=df1=<%nxy(a(IS+U{ME4ZbDEBtcD_3V=icT6*_ z)>|J?>&6%nvHhZERBtjK+s4xnut*@>GAmA5m*OTp$!^CHTr}vM4n(X1Q*;{e-Rd2BCF-u@1ZGm z!S8hJ6L=Gl4T_SDa7Xx|-{4mxveJg=ctf`BJ*fy!yF6Dz&?w(Q_6B}WQVtNI!BVBC zKfX<>7vd6C96}XAQmF-Jd?1Q4eTfRB3q7hCh0f!(JkdWT5<{iAE#dKy*Jxq&3a1@~ z8C||Dn2mFNyrUV|<-)C^_y7@8c2Fz+2jrae9deBDu;U}tJ{^xAdxCD248(k;dCJ%o z`y3sADe>U%suxwwv~8A1+R$VB=Q?%U?4joI$um;aH+eCrBqpn- z%79D_7rb;R-;-9RTrwi9dPlg8&@tfWhhZ(Vx&1PQ+6(huX`;M9x~LrW~~#3{j0Bh2kDU$}@!fFQej4VGkJv?M4rU^x!RU zEwhu$!CA_iDjFjrJa`aocySDX16?~;+wgav;}Zut6Mg%C4>}8FL?8)Kgwc(Qlj{@#2Pt0?G`$h7P#M+qoXtlV@d}%c&OzO+QYKK`kyXaK{U(O^2DyIXCZlNQjt0^8~8JzNGrIxhj}}M z&~QZlbx%t;MJ(Vux;2tgNKGlAqphLq%pd}JG9uoVHUo?|hN{pLQ6Em%r*+7t^<);X zm~6=qChlNAVXNN*Sow->*4;}T;l;D1I-5T{Bif@4_}=>l`tK;qqDdt5zvisCKhMAH z#r}`)7VW?LZqfdmXQ%zo5bJ00{Xb9^YKrk0Nf|oIW*K@(=`o2Vndz}ZDyk{!u}PVx zzd--+_WC*U{~DH3{?GI64IB+@On&@9X>EUAo&L+G{L^dozaI4C3G#2wr~hseW@K&g zKWs{uHu-9Je!3;4pE>eBltKUXb^*hG8I&413)$J&{D4N%7PcloU6bn%jPxJyQL?g* z9g+YFFEDiE`8rW^laCNzQmi7CTnPfwyg3VDHRAl>h=In6jeaVOP@!-CP60j3+#vpL zEYmh_oP0{-gTe7Or`L6x)6w?77QVi~jD8lWN@3RHcm80iV%M1A!+Y6iHM)05iC64tb$X2lV_%Txk@0l^hZqi^%Z?#- zE;LE0uFx)R08_S-#(wC=dS&}vj6P4>5ZWjhthP=*Hht&TdLtKDR;rXEX4*z0h74FA zMCINqrh3Vq;s%3MC1YL`{WjIAPkVL#3rj^9Pj9Ss7>7duy!9H0vYF%>1jh)EPqvlr6h%R%CxDsk| z!BACz7E%j?bm=pH6Eaw{+suniuY7C9Ut~1cWfOX9KW9=H><&kQlinPV3h9R>3nJvK z4L9(DRM=x;R&d#a@oFY7mB|m8h4692U5eYfcw|QKwqRsshN(q^v$4$)HgPpAJDJ`I zkqjq(8Cd!K!+wCd=d@w%~e$=gdUgD&wj$LQ1r>-E=O@c ze+Z$x{>6(JA-fNVr)X;*)40Eym1TtUZI1Pwwx1hUi+G1Jlk~vCYeXMNYtr)1?qwyg zsX_e*$h?380O00ou?0R@7-Fc59o$UvyVs4cUbujHUA>sH!}L54>`e` zHUx#Q+Hn&Og#YVOuo*niy*GU3rH;%f``nk#NN5-xrZ34NeH$l`4@t);4(+0|Z#I>Y z)~Kzs#exIAaf--65L0UHT_SvV8O2WYeD>Mq^Y6L!Xu8%vnpofG@w!}R7M28?i1*T&zp3X4^OMCY6(Dg<-! zXmcGQrRgHXGYre7GfTJ)rhl|rs%abKT_Nt24_Q``XH{88NVPW+`x4ZdrMuO0iZ0g` z%p}y};~T5gbb9SeL8BSc`SO#ixC$@QhXxZ=B}L`tP}&k?1oSPS=4%{UOHe0<_XWln zwbl5cn(j-qK`)vGHY5B5C|QZd5)W7c@{bNVXqJ!!n$^ufc?N9C-BF2QK1(kv++h!>$QbAjq)_b$$PcJdV+F7hz0Hu@ zqj+}m0qn{t^tD3DfBb~0B36|Q`bs*xs|$i^G4uNUEBl4g;op-;Wl~iThgga?+dL7s zUP(8lMO?g{GcYpDS{NM!UA8Hco?#}eNEioRBHy4`mq!Pd-9@-97|k$hpEX>xoX+dY zDr$wfm^P&}Wu{!%?)U_(%Mn79$(ywvu*kJ9r4u|MyYLI_67U7%6Gd_vb##Nerf@>& z8W11z$$~xEZt$dPG}+*IZky+os5Ju2eRi;1=rUEeIn>t-AzC_IGM-IXWK3^6QNU+2pe=MBn4I*R@A%-iLDCOHTE-O^wo$sL_h{dcPl=^muAQb`_BRm};=cy{qSkui;`WSsj9%c^+bIDQ z0`_?KX0<-=o!t{u(Ln)v>%VGL z0pC=GB7*AQ?N7N{ut*a%MH-tdtNmNC+Yf$|KS)BW(gQJ*z$d{+{j?(e&hgTy^2|AR9vx1Xre2fagGv0YXWqtNkg*v%40v?BJBt|f9wX5 z{QTlCM}b-0{mV?IG>TW_BdviUKhtosrBqdfq&Frdz>cF~yK{P@(w{Vr7z2qKFwLhc zQuogKO@~YwyS9%+d-zD7mJG~@?EFJLSn!a&mhE5$_4xBl&6QHMzL?CdzEnC~C3$X@ zvY!{_GR06ep5;<#cKCSJ%srxX=+pn?ywDwtJ2{TV;0DKBO2t++B(tIO4)Wh`rD13P z4fE$#%zkd=UzOB74gi=-*CuID&Z3zI^-`4U^S?dHxK8fP*;fE|a(KYMgMUo`THIS1f!*6dOI2 zFjC3O=-AL`6=9pp;`CYPTdVX z8(*?V&%QoipuH0>WKlL8A*zTKckD!paN@~hh zmXzm~qZhMGVdQGd=AG8&20HW0RGV8X{$9LldFZYm zE?}`Q3i?xJRz43S?VFMmqRyvWaS#(~Lempg9nTM$EFDP(Gzx#$r)W&lpFKqcAoJh-AxEw$-bjW>`_+gEi z2w`99#UbFZGiQjS8kj~@PGqpsPX`T{YOj`CaEqTFag;$jY z8_{Wzz>HXx&G*Dx<5skhpETxIdhKH?DtY@b9l8$l?UkM#J-Snmts7bd7xayKTFJ(u zyAT&@6cAYcs{PBfpqZa%sxhJ5nSZBPji?Zlf&}#L?t)vC4X5VLp%~fz2Sx<*oN<7` z?ge=k<=X7r<~F7Tvp9#HB{!mA!QWBOf%EiSJ6KIF8QZNjg&x~-%e*tflL(ji_S^sO ztmib1rp09uon}RcsFi#k)oLs@$?vs(i>5k3YN%$T(5Or(TZ5JW9mA6mIMD08=749$ z!d+l*iu{Il7^Yu}H;lgw=En1sJpCKPSqTCHy4(f&NPelr31^*l%KHq^QE>z>Ks_bH zjbD?({~8Din7IvZeJ>8Ey=e;I?thpzD=zE5UHeO|neioJwG;IyLk?xOz(yO&0DTU~ z^#)xcs|s>Flgmp;SmYJ4g(|HMu3v7#;c*Aa8iF#UZo7CvDq4>8#qLJ|YdZ!AsH%^_7N1IQjCro

K7UpUK$>l@ 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 E2O(~oYXATM literal 0 HcmV?d00001 diff --git a/java/gradle/wrapper/gradle-wrapper.properties b/java/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..a4b4429 --- /dev/null +++ b/java/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-6.3-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/java/gradlew b/java/gradlew new file mode 100755 index 0000000..4f906e0 --- /dev/null +++ b/java/gradlew @@ -0,0 +1,185 @@ +#!/usr/bin/env sh + +# +# Copyright 2015 the original author or authors. +# +# 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 +# +# https://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. +# + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=`expr $i + 1` + done + case $i in + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=`save "$@"` + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +exec "$JAVACMD" "$@" diff --git a/java/gradlew.bat b/java/gradlew.bat new file mode 100644 index 0000000..ac1b06f --- /dev/null +++ b/java/gradlew.bat @@ -0,0 +1,89 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/java/settings.gradle b/java/settings.gradle new file mode 100644 index 0000000..d7360d1 --- /dev/null +++ b/java/settings.gradle @@ -0,0 +1 @@ +rootProject.name='kontor-java' diff --git a/java/src/main/java/com/ibtp/kontor/Database.java b/java/src/main/java/com/ibtp/kontor/Database.java new file mode 100644 index 0000000..8d97843 --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/Database.java @@ -0,0 +1,46 @@ +package com.ibtp.kontor; + +import com.mongodb.MongoClient; +import org.mongodb.morphia.Datastore; +import org.mongodb.morphia.Morphia; + +import java.util.HashMap; + +/** + * Created by thomas on 01.03.16. + */ +public class Database { + + private static Database instance = null; + + private HashMap dbMap; + private Morphia morphia; + + private Database() { + dbMap = new HashMap(); + initMorphia(); + } + + private final void initMorphia() { + morphia = new Morphia(); + morphia.mapPackage("com.ibtp.kontor.comics.entity"); + } + + public void registerDatastore(String databaseName) { + if (!dbMap.containsKey(databaseName)) { + Datastore store = morphia.createDatastore(new MongoClient("127.0.0.1"), databaseName); + dbMap.put(databaseName, store); + } + } + + public Datastore getDatastore(String databaseName) { + return dbMap.get(databaseName); + } + + public static Database init() { + if (instance == null) { + instance = new Database(); + } + return instance; + } +} diff --git a/java/src/main/java/com/ibtp/kontor/DumpComics.java b/java/src/main/java/com/ibtp/kontor/DumpComics.java new file mode 100644 index 0000000..6ee56b1 --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/DumpComics.java @@ -0,0 +1,51 @@ +package com.ibtp.kontor; + +import com.ibtp.kontor.comics.entity.Artist; +import com.ibtp.kontor.comics.entity.Comic; +import com.ibtp.kontor.comics.entity.Publisher; +import com.mongodb.MongoClient; +import org.mongodb.morphia.Datastore; +import org.mongodb.morphia.Morphia; +import org.mongodb.morphia.query.Query; + +import java.util.Iterator; +import java.util.List; + +/** + * Created by thomas on 29.02.16. + */ +public class DumpComics { + + public static void main(String[] args) { + final Database database = Database.init(); + database.registerDatastore("kontor"); + database.registerDatastore("comics"); + Datastore kontor = database.getDatastore("kontor"); + Datastore comics = database.getDatastore("comics"); + final Query query = kontor.createQuery(Artist.class); + final List artists = query.asList(); + System.out.println(artists); + for (Artist artist: artists) { + String artistName = artist.getName(); + System.out.println("Artist(" + artist.getId() + ": " + artistName + ")"); + if (comics.createQuery(Artist.class).field("name").equal(artistName).asList().isEmpty()) { + Artist comicsArtist = new Artist(artistName); + comics.save(comicsArtist); + } + } + final List publishers = kontor.createQuery(Publisher.class).asList(); + for (Publisher publisher: publishers) { + String publisherName = publisher.getName(); + System.out.println("Publisher(" + publisher.getId() + ": " + publisherName + ")"); + if (comics.createQuery(Publisher.class).field("name").equal(publisherName).asList().isEmpty()) { + Publisher comicsPublisher = new Publisher(publisherName); + comics.save(comicsPublisher); + } + } + final List comicList = comics.createQuery(Comic.class).asList(); + System.out.println(comicList); + for (Comic comic: comicList ) { + System.out.println(comic); + } + } +} diff --git a/java/src/main/java/com/ibtp/kontor/KontorApp.java b/java/src/main/java/com/ibtp/kontor/KontorApp.java new file mode 100644 index 0000000..b87a849 --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/KontorApp.java @@ -0,0 +1,23 @@ +package com.ibtp.kontor; + +/** + * Created by TPEETZ on 10.02.2015. + */ +public class KontorApp { + + private KontorGUI mainframe; + + public KontorApp() { + mainframe = new KontorGUI(this); + + mainframe.setVisible(true); + } + + public void exitApplication() { + System.exit(0); + } + + public static void main(String[] args) { + new KontorApp(); + } +} diff --git a/java/src/main/java/com/ibtp/kontor/KontorGUI.java b/java/src/main/java/com/ibtp/kontor/KontorGUI.java new file mode 100644 index 0000000..40a4b2d --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/KontorGUI.java @@ -0,0 +1,69 @@ +package com.ibtp.kontor; + + +import com.ibtp.kontor.comics.view.ComicsMenu; +import com.ibtp.kontor.library.view.LibraryMenu; +import com.ibtp.kontor.tradingcards.view.TradingCardsMenu; + +import javax.swing.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +/** + * Created by TPEETZ on 11.02.2015. + */ +public class KontorGUI extends javax.swing.JFrame { + + KontorApp application; + JMenuBar menuBar; + JMenu menuFile; + JMenuItem menuFileExit; + + JMenuItem menuFileStart = new JMenuItem(); + + JMenu menuHelp; + JMenuItem menuHelpAbout; + + public KontorGUI(KontorApp kontorApp) { + application = kontorApp; + initComponents(); + } + + private void initComponents() { + setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); + GroupLayout layout = new GroupLayout(getContentPane()); + getContentPane().setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(GroupLayout.Alignment.LEADING).addGap(0, 400, Short.MAX_VALUE) + ); + layout.setVerticalGroup( + layout.createParallelGroup(GroupLayout.Alignment.LEADING).addGap(0, 300, Short.MAX_VALUE) + ); + pack(); + setTitle("Kontor Application"); + createMainMenu(); + //createToolBar(); + } + + private void createMainMenu() { + menuBar = new JMenuBar(); + menuFile = new JMenu("File"); + menuFileExit = new JMenuItem("Exit"); + menuHelp = new JMenu("Help"); + menuHelpAbout = new JMenuItem("About"); + setJMenuBar(menuBar); + menuBar.add(menuFile); + menuFile.add(menuFileExit); + menuBar.add(new ComicsMenu()); + menuBar.add(new LibraryMenu()); + menuBar.add(new TradingCardsMenu()); + menuBar.add(menuHelp); + menuHelp.add(menuHelpAbout); + menuFileExit.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + application.exitApplication(); + } + }); + } +} diff --git a/java/src/main/java/com/ibtp/kontor/comics/dal/ArtistDao.java b/java/src/main/java/com/ibtp/kontor/comics/dal/ArtistDao.java new file mode 100644 index 0000000..00c4b01 --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/comics/dal/ArtistDao.java @@ -0,0 +1,26 @@ +package com.ibtp.kontor.comics.dal; + +import com.ibtp.kontor.comics.entity.ArtistEntity; + +import java.util.Collection; +import java.util.List; + +/** + * Created by TPEETZ on 16.01.2015. + */ +interface ArtistDao { + + public ArtistEntity getById(Long id); + + public Collection findByIds(List ids); + + public Collection findByName(String name); + + public Collection findAll(); + + public ArtistEntity addArtist(String name); + + public ArtistEntity store(ArtistEntity entity); + + public void delete(ArtistEntity entity); +} diff --git a/java/src/main/java/com/ibtp/kontor/comics/dal/ArtistImpl.java b/java/src/main/java/com/ibtp/kontor/comics/dal/ArtistImpl.java new file mode 100644 index 0000000..d01b987 --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/comics/dal/ArtistImpl.java @@ -0,0 +1,68 @@ +package com.ibtp.kontor.comics.dal; + +import com.ibtp.kontor.comics.entity.ArtistEntity; +import com.ibtp.kontor.dal.BaseImpl; + +import javax.persistence.EntityManager; +import javax.persistence.Query; + +import java.util.Collection; +import java.util.List; + +/** + * Created by TPEETZ on 16.01.2015. + */ +public class ArtistImpl extends BaseImpl implements ArtistDao { + + public ArtistImpl() {} + + @Override + public ArtistEntity getById(Long id) { + Query query = getEntityManager().createNamedQuery("Artist.findById"); + query.setParameter("id", id); + return (ArtistEntity)query.getSingleResult(); + } + + @Override + public Collection findByIds(List ids) { + return null; + } + + @Override + public Collection findAll() { + Query query = getEntityManager().createNamedQuery("Artist.findAll"); + return query.getResultList(); + + } + + @Override + public Collection findByName(String name) { + Query query = getEntityManager().createNamedQuery("Artist.findByName"); + query.setParameter("name", name); + return query.getResultList(); + } + + @Override + public ArtistEntity addArtist(String name) { + ArtistEntity artist = new ArtistEntity(name); + artist = store(artist); + return artist; + } + + @Override + public ArtistEntity store(ArtistEntity entity) { + EntityManager em = getEntityManager(); + em.getTransaction().begin(); + em.persist(entity); + em.getTransaction().commit(); + return entity; + } + + @Override + public void delete(ArtistEntity entity) { + EntityManager em = getEntityManager(); + em.getTransaction().begin(); + em.remove(entity); + em.getTransaction().commit(); + } +} diff --git a/java/src/main/java/com/ibtp/kontor/comics/dal/ComicDao.java b/java/src/main/java/com/ibtp/kontor/comics/dal/ComicDao.java new file mode 100644 index 0000000..c77fb89 --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/comics/dal/ComicDao.java @@ -0,0 +1,26 @@ +package com.ibtp.kontor.comics.dal; + +import com.ibtp.kontor.comics.entity.ComicEntity; + +import java.util.Collection; +import java.util.List; + +/** + * Created by thomas on 17.01.15. + */ +interface ComicDao { + + public ComicEntity getById(Long id); + + public Collection findByIds(List ids); + + public Collection findByTitle(String title); + + public Collection findAll(); + + public ComicEntity addComic(String title); + + public ComicEntity store(ComicEntity entity); + + public void delete(ComicEntity entity); +} diff --git a/java/src/main/java/com/ibtp/kontor/comics/dal/ComicImpl.java b/java/src/main/java/com/ibtp/kontor/comics/dal/ComicImpl.java new file mode 100644 index 0000000..ecbad88 --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/comics/dal/ComicImpl.java @@ -0,0 +1,65 @@ +package com.ibtp.kontor.comics.dal; + +import com.ibtp.kontor.comics.entity.ComicEntity; +import com.ibtp.kontor.dal.BaseImpl; + +import javax.persistence.EntityManager; +import javax.persistence.Query; +import java.util.Collection; +import java.util.List; + +/** + * Created by TPEETZ on 28.01.2015. + */ +public class ComicImpl extends BaseImpl implements ComicDao { + + @Override + public ComicEntity getById(Long id) { + Query query = getEntityManager().createNamedQuery("Comic.findById"); + query.setParameter("id", id); + return (ComicEntity)query.getSingleResult(); + } + + @Override + public Collection findByIds(List ids) { + return null; + } + + @Override + public Collection findByTitle(String title) { + Query query = getEntityManager().createNamedQuery("Comic.findByTitle"); + query.setParameter("title", title); + return query.getResultList(); + } + + @Override + public Collection findAll() { + Query query = getEntityManager().createNamedQuery("Comic.findAll"); + return query.getResultList(); + } + + @Override + public ComicEntity addComic(String title) { + ComicEntity comicEntity = new ComicEntity(); + comicEntity.setTitle(title); + store(comicEntity); + return comicEntity; + } + + @Override + public ComicEntity store(ComicEntity entity) { + EntityManager em = getEntityManager(); + em.getTransaction().begin(); + em.persist(entity); + em.getTransaction().commit(); + return entity; + } + + @Override + public void delete(ComicEntity entity) { + EntityManager em = getEntityManager(); + em.getTransaction().begin(); + em.remove(entity); + em.getTransaction().commit(); + } +} diff --git a/java/src/main/java/com/ibtp/kontor/comics/dal/IssueDao.java b/java/src/main/java/com/ibtp/kontor/comics/dal/IssueDao.java new file mode 100644 index 0000000..49a5ab2 --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/comics/dal/IssueDao.java @@ -0,0 +1,23 @@ +package com.ibtp.kontor.comics.dal; + +import com.ibtp.kontor.comics.entity.IssueEntity; + +import java.util.Collection; +import java.util.List; + +/** + * Created by TPEETZ on 19.01.2015. + */ +interface IssueDao { + public IssueEntity getById(Long id); + + public Collection findByIds(List ids); + + public Collection findByNumber(String number); + + public Collection findAll(); + + public IssueEntity store(IssueEntity entity); + + public void delete(IssueEntity entity); +} diff --git a/java/src/main/java/com/ibtp/kontor/comics/dal/IssueImpl.java b/java/src/main/java/com/ibtp/kontor/comics/dal/IssueImpl.java new file mode 100644 index 0000000..8f70845 --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/comics/dal/IssueImpl.java @@ -0,0 +1,57 @@ +package com.ibtp.kontor.comics.dal; + +import com.ibtp.kontor.comics.entity.IssueEntity; +import com.ibtp.kontor.dal.BaseImpl; + +import javax.persistence.EntityManager; +import javax.persistence.Query; +import java.util.Collection; +import java.util.List; + +/** + * Created by TPEETZ on 28.01.2015. + */ +public class IssueImpl extends BaseImpl implements IssueDao { + + @Override + public IssueEntity getById(Long id) { + Query query = getEntityManager().createNamedQuery("Issue.findById"); + query.setParameter("id", id); + return (IssueEntity)query.getSingleResult(); + } + + @Override + public Collection findByIds(List ids) { + return null; + } + + @Override + public Collection findByNumber(String number) { + Query query = getEntityManager().createNamedQuery("Issue.findByNumber"); + query.setParameter("number", number); + return query.getResultList(); + } + + @Override + public Collection findAll() { + Query query = getEntityManager().createNamedQuery("Issue.findAll"); + return query.getResultList(); + } + + @Override + public IssueEntity store(IssueEntity entity) { + EntityManager em = getEntityManager(); + em.getTransaction().begin(); + em.persist(entity); + em.getTransaction().commit(); + return entity; + } + + @Override + public void delete(IssueEntity entity) { + EntityManager em = getEntityManager(); + em.getTransaction().begin(); + em.remove(entity); + em.getTransaction().commit(); + } +} diff --git a/java/src/main/java/com/ibtp/kontor/comics/dal/PublisherDao.java b/java/src/main/java/com/ibtp/kontor/comics/dal/PublisherDao.java new file mode 100644 index 0000000..0722522 --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/comics/dal/PublisherDao.java @@ -0,0 +1,26 @@ +package com.ibtp.kontor.comics.dal; + +import com.ibtp.kontor.comics.entity.PublisherEntity; + +import java.util.Collection; +import java.util.List; + +/** + * Created by thomas on 17.01.15. + */ +interface PublisherDao { + + public PublisherEntity getById(Long id); + + public Collection findByIds(List ids); + + public Collection findByName(String name); + + public Collection findAll(); + + public PublisherEntity addPublisher(String name); + + public PublisherEntity store(PublisherEntity entity); + + public void delete(PublisherEntity entity); +} diff --git a/java/src/main/java/com/ibtp/kontor/comics/dal/PublisherImpl.java b/java/src/main/java/com/ibtp/kontor/comics/dal/PublisherImpl.java new file mode 100644 index 0000000..d911c4d --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/comics/dal/PublisherImpl.java @@ -0,0 +1,62 @@ +package com.ibtp.kontor.comics.dal; + +import com.ibtp.kontor.comics.entity.PublisherEntity; +import com.ibtp.kontor.dal.BaseImpl; + +import javax.persistence.EntityManager; +import javax.persistence.Query; +import java.util.Collection; +import java.util.List; + +/** + * Created by TPEETZ on 20.01.2015. + */ +public class PublisherImpl extends BaseImpl implements PublisherDao { + + @Override + public PublisherEntity getById(Long id) { + return null; + } + + @Override + public Collection findByIds(List ids) { + return null; + } + + @Override + public Collection findByName(String name) { + Query query = getEntityManager().createNamedQuery("Publisher.findByName"); + query.setParameter("name", name); + return query.getResultList(); + } + + @Override + public Collection findAll() { + Query query = getEntityManager().createNamedQuery("Publisher.findAll"); + return query.getResultList(); + } + + @Override + public PublisherEntity addPublisher(String name) { + PublisherEntity publisher = new PublisherEntity(name); + store(publisher); + return publisher; + } + + @Override + public PublisherEntity store(PublisherEntity entity) { + EntityManager em = getEntityManager(); + em.getTransaction().begin(); + em.persist(entity); + em.getTransaction().commit(); + return entity; + } + + @Override + public void delete(PublisherEntity entity) { + EntityManager em = getEntityManager(); + em.getTransaction().begin(); + em.remove(entity); + em.getTransaction().commit(); + } +} diff --git a/java/src/main/java/com/ibtp/kontor/comics/dal/StoryArcDao.java b/java/src/main/java/com/ibtp/kontor/comics/dal/StoryArcDao.java new file mode 100644 index 0000000..40761fe --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/comics/dal/StoryArcDao.java @@ -0,0 +1,24 @@ +package com.ibtp.kontor.comics.dal; + +import com.ibtp.kontor.comics.entity.StoryArcEntity; + +import java.util.Collection; +import java.util.List; + +/** + * Created by TPEETZ on 19.01.2015. + */ +interface StoryArcDao { + + public StoryArcEntity getById(Long id); + + public Collection findByIds(List ids); + + public Collection findByTitle(String title); + + public Collection findAll(); + + public StoryArcEntity store(StoryArcEntity entity); + + public void delete(StoryArcEntity entity); +} diff --git a/java/src/main/java/com/ibtp/kontor/comics/dal/StoryArcImpl.java b/java/src/main/java/com/ibtp/kontor/comics/dal/StoryArcImpl.java new file mode 100644 index 0000000..3a39271 --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/comics/dal/StoryArcImpl.java @@ -0,0 +1,55 @@ +package com.ibtp.kontor.comics.dal; + +import com.ibtp.kontor.comics.entity.StoryArcEntity; +import com.ibtp.kontor.dal.BaseImpl; + +import javax.persistence.EntityManager; +import javax.persistence.Query; +import java.util.Collection; +import java.util.List; + +/** + * Created by TPEETZ on 28.01.2015. + */ +public class StoryArcImpl extends BaseImpl implements StoryArcDao { + + @Override + public StoryArcEntity getById(Long id) { + return null; + } + + @Override + public Collection findByIds(List ids) { + return null; + } + + @Override + public Collection findByTitle(String title) { + Query query = getEntityManager().createNamedQuery("StoryArc.findByTitle"); + query.setParameter("title", title); + return query.getResultList(); + } + + @Override + public Collection findAll() { + Query query = getEntityManager().createNamedQuery("StoryArc.findAll"); + return query.getResultList(); + } + + @Override + public StoryArcEntity store(StoryArcEntity entity) { + EntityManager em = getEntityManager(); + em.getTransaction().begin(); + em.persist(entity); + em.getTransaction().commit(); + return entity; + } + + @Override + public void delete(StoryArcEntity entity) { + EntityManager em = getEntityManager(); + em.getTransaction().begin(); + em.remove(entity); + em.getTransaction().commit(); + } +} diff --git a/java/src/main/java/com/ibtp/kontor/comics/dal/VolumeDao.java b/java/src/main/java/com/ibtp/kontor/comics/dal/VolumeDao.java new file mode 100644 index 0000000..26759bd --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/comics/dal/VolumeDao.java @@ -0,0 +1,24 @@ +package com.ibtp.kontor.comics.dal; + +import com.ibtp.kontor.comics.entity.VolumeEntity; + +import java.util.Collection; +import java.util.List; + +/** + * Created by TPEETZ on 19.01.2015. + */ +interface VolumeDao { + + public VolumeEntity getById(Long id); + + public Collection findByIds(List ids); + + public Collection findByTitle(String title); + + public Collection findAll(); + + public VolumeEntity store(VolumeEntity entity); + + public void delete(VolumeEntity entity); +} diff --git a/java/src/main/java/com/ibtp/kontor/comics/dal/VolumeImpl.java b/java/src/main/java/com/ibtp/kontor/comics/dal/VolumeImpl.java new file mode 100644 index 0000000..bb20a4a --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/comics/dal/VolumeImpl.java @@ -0,0 +1,57 @@ +package com.ibtp.kontor.comics.dal; + +import com.ibtp.kontor.comics.entity.VolumeEntity; +import com.ibtp.kontor.dal.BaseImpl; + +import javax.persistence.EntityManager; +import javax.persistence.Query; +import java.util.Collection; +import java.util.List; + +/** + * Created by TPEETZ on 28.01.2015. + */ +public class VolumeImpl extends BaseImpl implements VolumeDao { + + @Override + public VolumeEntity getById(Long id) { + Query query = getEntityManager().createNamedQuery("Volume.findById"); + query.setParameter("id", id); + return (VolumeEntity)query.getSingleResult(); + } + + @Override + public Collection findByIds(List ids) { + return null; + } + + @Override + public Collection findByTitle(String title) { + Query query = getEntityManager().createNamedQuery("Volume.findByTitle"); + query.setParameter("title", title); + return query.getResultList(); + } + + @Override + public Collection findAll() { + Query query = getEntityManager().createNamedQuery("Volume.findAll"); + return query.getResultList(); + } + + @Override + public VolumeEntity store(VolumeEntity entity) { + EntityManager em = getEntityManager(); + em.getTransaction().begin(); + em.persist(entity); + em.getTransaction().commit(); + return entity; + } + + @Override + public void delete(VolumeEntity entity) { + EntityManager em = getEntityManager(); + em.getTransaction().begin(); + em.remove(entity); + em.getTransaction().commit(); + } +} diff --git a/java/src/main/java/com/ibtp/kontor/comics/entity/Artist.java b/java/src/main/java/com/ibtp/kontor/comics/entity/Artist.java new file mode 100644 index 0000000..a7c09b9 --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/comics/entity/Artist.java @@ -0,0 +1,46 @@ +package com.ibtp.kontor.comics.entity; + +import org.bson.types.ObjectId; +import org.mongodb.morphia.annotations.Entity; +import org.mongodb.morphia.annotations.Id; +import org.mongodb.morphia.annotations.Property; + +/** + * Created by thomas on 29.02.16. + */ +@Entity("artist") +public class Artist { + + public Artist() {} + + public Artist(String name) { + setName(name); + } + + @Id + private ObjectId id; + + @Property + private String name; + + public ObjectId getId() { + return id; + } + + public void setId(ObjectId id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @Override + public String toString() { + return name; + } +} diff --git a/java/src/main/java/com/ibtp/kontor/comics/entity/ArtistEntity.java b/java/src/main/java/com/ibtp/kontor/comics/entity/ArtistEntity.java new file mode 100644 index 0000000..50ede83 --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/comics/entity/ArtistEntity.java @@ -0,0 +1,72 @@ +package com.ibtp.kontor.comics.entity; + +import javax.persistence.*; +import java.util.ArrayList; +import java.util.Collection; + +/** + * Created by TPEETZ on 16.01.2015. + */ +@NamedQueries({ + @NamedQuery(name="Artist.findAll", query="SELECT a from ArtistEntity as a"), + @NamedQuery(name="Artist.findByName", query="SELECT a from ArtistEntity as a WHERE a.name = :name") +}) + +@Entity +@Table(name="ARTIST") +public class ArtistEntity { + + private Long id; + + private String name; + + private Collection writtenIssues = new ArrayList(); + + private Collection inkedIssues = new ArrayList(); + + private Collection penciledIssues = new ArrayList(); + + public ArtistEntity(String name) { + setName(name); + } + + public ArtistEntity() {} + + @Id + @GeneratedValue(strategy=GenerationType.AUTO) + Long getId() { return id; } + + @SuppressWarnings("unused") + private void setId(Long id) { this.id = id; } + + @Column + String getName() { return name; } + + void setName(String name) { this.name = name; } + + public void setWrittenIssues(Collection writtenIssues) { this.writtenIssues = writtenIssues; } + + @OneToMany(mappedBy="writer", cascade=CascadeType.REMOVE) + public Collection getWrittenIssues() { + return writtenIssues; + } + + public void setInkedIssues(Collection inkedIssues) { this.inkedIssues = inkedIssues; } + + @OneToMany(mappedBy="inker", cascade=CascadeType.REMOVE) + public Collection getInkedIssues() { + return inkedIssues; + } + + public void setPenciledIssues(Collection penciledIssues) { this.penciledIssues = penciledIssues; } + + @OneToMany(mappedBy="penciler", cascade=CascadeType.REMOVE) + public Collection getPenciledIssues() { + return penciledIssues; + } + + @Override + public String toString() { + return "Artist[" + "id=" + getId() + ",name=" + getName() + "]"; + } +} diff --git a/java/src/main/java/com/ibtp/kontor/comics/entity/Comic.java b/java/src/main/java/com/ibtp/kontor/comics/entity/Comic.java new file mode 100644 index 0000000..c6ac7b6 --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/comics/entity/Comic.java @@ -0,0 +1,98 @@ +package com.ibtp.kontor.comics.entity; + +import org.bson.types.ObjectId; +import org.mongodb.morphia.annotations.Entity; +import org.mongodb.morphia.annotations.Id; +import org.mongodb.morphia.annotations.Property; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by thomas on 01.03.16. + */ +@Entity("comic") +public class Comic { + + @Id + private ObjectId id; + + @Property + private String title; + + @Property + private ObjectId publisher; + + @Property + private Boolean current_order; + + @Property + private Boolean completed; + + @Property + private List issues = new ArrayList(); + + @Property + private List stories = new ArrayList(); + + public ObjectId getId() { + return id; + } + + public void setId(ObjectId id) { + this.id = id; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public ObjectId getPublisher() { + return publisher; + } + + public void setPublisher(ObjectId publisher) { + this.publisher = publisher; + } + + public Boolean getCurrent_order() { + return current_order; + } + + public void setCurrent_order(Boolean current_order) { + this.current_order = current_order; + } + + public Boolean getCompleted() { + return completed; + } + + public void setCompleted(Boolean completed) { + this.completed = completed; + } + + public List getIssues() { + return issues; + } + + public void setIssues(List issues) { + this.issues = issues; + } + + public List getStories() { + return stories; + } + + public void setStories(List stories) { + this.stories = stories; + } + + @Override + public String toString() { + return title + " - " + Publisher.getById(publisher); + } +} diff --git a/java/src/main/java/com/ibtp/kontor/comics/entity/ComicEntity.java b/java/src/main/java/com/ibtp/kontor/comics/entity/ComicEntity.java new file mode 100644 index 0000000..2d21c10 --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/comics/entity/ComicEntity.java @@ -0,0 +1,81 @@ +package com.ibtp.kontor.comics.entity; + +import javax.persistence.*; +import java.util.ArrayList; +import java.util.Collection; + +/** + * Created by thomas on 17.01.15. + */ +@NamedQueries({ + @NamedQuery(name="Comic.findAll", query="SELECT c from ComicEntity as c"), + @NamedQuery(name="Comic.findByTitle", query="SELECT c from ComicEntity as c WHERE c.title = :title") +}) +@Entity +@Table(name = "COMIC") +public class ComicEntity { + + private Long id; + + private String title; + + private Boolean completed; + + private Boolean currentOrder; + + private Collection issues = new ArrayList(); + + private Collection storyArc = new ArrayList(); + + private Collection volumes = new ArrayList(); + + private PublisherEntity publisher; + + @Id + @GeneratedValue(strategy=GenerationType.AUTO) + public Long getId() { return id; } + + @SuppressWarnings("unused") + private void setId(Long id) { this.id = id; } + + @Column + public String getTitle() { return title; } + + public void setTitle(String title) { this.title = title; } + + @Column + public Boolean getCompleted() { return completed; } + + public Boolean isCompleted() { return completed; } + + public void setCompleted(Boolean completed) { this.completed = completed; } + + @Column + public Boolean getCurrentOrder() { return currentOrder; } + + public Boolean isCurrentOrder() { return currentOrder; } + + public void setCurrentOrder(Boolean currentOrder) { this.currentOrder = currentOrder; } + + public void setIssues(Collection issues) { this.issues = issues; } + + @OneToMany(mappedBy="comic", cascade=CascadeType.REMOVE) + public Collection getIssues() { return issues; } + + public void setStoryArc(Collection storyArc) { this.storyArc = storyArc; } + + @OneToMany(mappedBy="comic", cascade=CascadeType.REMOVE) + public Collection getStoryArc() { return storyArc; } + + public void setVolumes(Collection volumes) { this.volumes = volumes; } + + @OneToMany(mappedBy="comic", cascade=CascadeType.REMOVE) + public Collection getVolumes() { return volumes; } + + @ManyToOne + public PublisherEntity getPublisher() { return publisher; } + + public void setPublisher(PublisherEntity publisher) { + this.publisher = publisher; + } +} diff --git a/java/src/main/java/com/ibtp/kontor/comics/entity/Issue.java b/java/src/main/java/com/ibtp/kontor/comics/entity/Issue.java new file mode 100644 index 0000000..9821134 --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/comics/entity/Issue.java @@ -0,0 +1,66 @@ +package com.ibtp.kontor.comics.entity; + +import org.bson.types.ObjectId; +import org.mongodb.morphia.annotations.Id; +import org.mongodb.morphia.annotations.Property; + +/** + * Created by thomas on 01.03.16. + */ +public class Issue { + + @Id + private ObjectId id; + + @Property + private String number; + + //@Reference + private Comic comic; + + @Property + private Boolean is_read; + + @Property + private Boolean is_stock; + + public ObjectId getId() { + return id; + } + + public void setId(ObjectId id) { + this.id = id; + } + + public String getNumber() { + return number; + } + + public void setNumber(String number) { + this.number = number; + } + + public Comic getComic() { + return comic; + } + + public void setComic(Comic comic) { + this.comic = comic; + } + + public Boolean getIs_read() { + return is_read; + } + + public void setIs_read(Boolean is_read) { + this.is_read = is_read; + } + + public Boolean getIs_stock() { + return is_stock; + } + + public void setIs_stock(Boolean is_stock) { + this.is_stock = is_stock; + } +} diff --git a/java/src/main/java/com/ibtp/kontor/comics/entity/IssueEntity.java b/java/src/main/java/com/ibtp/kontor/comics/entity/IssueEntity.java new file mode 100644 index 0000000..93a7662 --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/comics/entity/IssueEntity.java @@ -0,0 +1,75 @@ +package com.ibtp.kontor.comics.entity; + +import javax.persistence.*; + +/** + * Created by thomas on 18.01.15. + */ +@NamedQueries({ + @NamedQuery(name="Issue.findAll", query="SELECT i from IssueEntity as i"), + @NamedQuery(name="Issue.findByNumber", query="SELECT i from IssueEntity as i WHERE i.number = :number") +}) + +@Entity +@Table(name = "ISSUE") +public class IssueEntity { + + private Long id; + + private String number; + + private Boolean completed; + + private ComicEntity comic; + + private ArtistEntity writer; + + private ArtistEntity inker; + + private ArtistEntity penciler; + + private StoryArcEntity storyArc; + + @Id + @GeneratedValue(strategy=GenerationType.AUTO) + public Long getId() { return id; } + + @SuppressWarnings("unused") + private void setId(Long id) { this.id = id; } + + @Column + public String getNumber() { return number; } + + public void setNumber(String number) { this.number = number; } + + @Column + public Boolean getCompleted() { return completed; } + public Boolean isCompleted() { return completed; } + + public void setCompleted(Boolean completed) { this.completed = completed; } + + public void setComic(ComicEntity comic) { this.comic = comic; } + + @ManyToOne + public ComicEntity getComic() { return comic; } + + public void setWriter(ArtistEntity writer) { this.writer = writer; } + + @ManyToOne + public ArtistEntity getWriter() { return writer; } + + public void setInker(ArtistEntity inker) { this.inker = inker; } + + @ManyToOne + public ArtistEntity getInker() { return inker; } + + public void setPenciler(ArtistEntity penciler) { this.penciler = penciler; } + + @ManyToOne + public ArtistEntity getPenciler() { return penciler; } + + public void setStoryArc(StoryArcEntity storyArc) { this.storyArc = storyArc; } + + @ManyToOne + public StoryArcEntity getStoryArc() { return storyArc; } +} diff --git a/java/src/main/java/com/ibtp/kontor/comics/entity/Publisher.java b/java/src/main/java/com/ibtp/kontor/comics/entity/Publisher.java new file mode 100644 index 0000000..e147d59 --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/comics/entity/Publisher.java @@ -0,0 +1,60 @@ +package com.ibtp.kontor.comics.entity; + +import com.ibtp.kontor.Database; +import org.bson.types.ObjectId; +import org.mongodb.morphia.Datastore; +import org.mongodb.morphia.annotations.Entity; +import org.mongodb.morphia.annotations.Id; +import org.mongodb.morphia.annotations.Property; + +import java.util.List; + +/** + * Created by thomas on 01.03.16. + */ +@Entity("publisher") +public class Publisher { + + public Publisher() {} + + public Publisher(String name) { + setName(name); + } + + @Id + private ObjectId id; + + @Property + private String name; + + public ObjectId getId() { + return id; + } + + public void setId(ObjectId id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @Override + public String toString() { + return name; + } + + public static Publisher getById(ObjectId publisherId) { + Datastore store = Database.init().getDatastore("comics"); + List results = store.createQuery(Publisher.class).field("id").equal(publisherId).asList(); + if (results.size() > 0) { + return results.get(0); + } else { + return null; + } + } +} diff --git a/java/src/main/java/com/ibtp/kontor/comics/entity/PublisherEntity.java b/java/src/main/java/com/ibtp/kontor/comics/entity/PublisherEntity.java new file mode 100644 index 0000000..9aec40e --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/comics/entity/PublisherEntity.java @@ -0,0 +1,47 @@ +package com.ibtp.kontor.comics.entity; + +import javax.persistence.*; +import java.util.ArrayList; +import java.util.Collection; + +/** + * Created by thomas on 17.01.15. + */ +@NamedQueries({ + @NamedQuery(name="Publisher.findAll", query="SELECT p from PublisherEntity as p"), + @NamedQuery(name="Publisher.findByName", query="SELECT p from PublisherEntity as p WHERE p.name = :name") +}) + +@Entity +@Table(name = "PUBLISHER") +public class PublisherEntity { + + private Long id; + + private String name; + + private Collection comic = new ArrayList(); + + public PublisherEntity() {} + + public PublisherEntity(String name) { + setName(name); + } + + @Id + @GeneratedValue(strategy= GenerationType.AUTO) + public Long getId() { return id; } + + @SuppressWarnings("unused") + private void setId(Long id) { this.id = id; } + + @Column + public String getName() { return name; } + + void setName(String name) { this.name = name; } + + public void setComic(Collection comic) { this.comic = comic; } + + @OneToMany(mappedBy="publisher", cascade=CascadeType.REMOVE) + public Collection getComic() { return comic; } +} diff --git a/java/src/main/java/com/ibtp/kontor/comics/entity/StoryArc.java b/java/src/main/java/com/ibtp/kontor/comics/entity/StoryArc.java new file mode 100644 index 0000000..4a4812b --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/comics/entity/StoryArc.java @@ -0,0 +1,59 @@ +package com.ibtp.kontor.comics.entity; + +import org.bson.types.ObjectId; +import org.mongodb.morphia.annotations.Id; +import org.mongodb.morphia.annotations.Property; +import org.mongodb.morphia.annotations.Reference; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by thomas on 01.03.16. + */ +public class StoryArc { + + @Id + private ObjectId id; + + @Property + private String name; + + @Reference + private Comic comic; + + @Reference + private List issues = new ArrayList(); + + public ObjectId getId() { + return id; + } + + public void setId(ObjectId id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Comic getComic() { + return comic; + } + + public void setComic(Comic comic) { + this.comic = comic; + } + + public List getIssues() { + return issues; + } + + public void setIssues(List issues) { + this.issues = issues; + } +} diff --git a/java/src/main/java/com/ibtp/kontor/comics/entity/StoryArcEntity.java b/java/src/main/java/com/ibtp/kontor/comics/entity/StoryArcEntity.java new file mode 100644 index 0000000..e3ea22b --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/comics/entity/StoryArcEntity.java @@ -0,0 +1,48 @@ +package com.ibtp.kontor.comics.entity; + +import javax.persistence.*; +import java.util.ArrayList; +import java.util.Collection; + +/** + * Created by thomas on 17.01.15. + */ +@NamedQueries({ + @NamedQuery(name="StoryArc.findAll", query="SELECT s from StoryArcEntity as s"), + @NamedQuery(name="StoryArc.findByTitle", query="SELECT s from StoryArcEntity as s WHERE s.title = :title") +}) + +@Entity +@Table(name = "STORYARC") +public class StoryArcEntity { + + private Long id; + + private String title; + + private Collection issues = new ArrayList(); + + private ComicEntity comic; + + @Id + @GeneratedValue(strategy=GenerationType.AUTO) + public Long getId() { return id; } + + @SuppressWarnings("unused") + private void setId(Long id) { this.id = id; } + + @Column + public String getTitle() { return title; } + + public void setTitle(String title) { this.title = title; } + + public void setIssues(Collection issues) { this.issues = issues; } + + @OneToMany(mappedBy="storyArc", cascade=CascadeType.REMOVE) + public Collection getIssues() { return issues; } + + public void setComic(ComicEntity comic) { this.comic = comic; } + + @ManyToOne + public ComicEntity getComic() { return comic; } +} diff --git a/java/src/main/java/com/ibtp/kontor/comics/entity/TradePaperback.java b/java/src/main/java/com/ibtp/kontor/comics/entity/TradePaperback.java new file mode 100644 index 0000000..161afd7 --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/comics/entity/TradePaperback.java @@ -0,0 +1,56 @@ +package com.ibtp.kontor.comics.entity; + + +import org.bson.types.ObjectId; +import org.mongodb.morphia.annotations.Id; +import org.mongodb.morphia.annotations.Reference; + +/** + * Created by thomas on 01.03.16. + */ +public class TradePaperback { + + @Id + private ObjectId id; + + @Reference + private Comic comic; + + @Reference + private String issue_start; + + @Reference + private String issue_end; + + public ObjectId getId() { + return id; + } + + public void setId(ObjectId id) { + this.id = id; + } + + public Comic getComic() { + return comic; + } + + public void setComic(Comic comic) { + this.comic = comic; + } + + public String getIssue_start() { + return issue_start; + } + + public void setIssue_start(String issue_start) { + this.issue_start = issue_start; + } + + public String getIssue_end() { + return issue_end; + } + + public void setIssue_end(String issue_end) { + this.issue_end = issue_end; + } +} diff --git a/java/src/main/java/com/ibtp/kontor/comics/entity/Volume.java b/java/src/main/java/com/ibtp/kontor/comics/entity/Volume.java new file mode 100644 index 0000000..7191824 --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/comics/entity/Volume.java @@ -0,0 +1,70 @@ +package com.ibtp.kontor.comics.entity; + +import org.bson.types.ObjectId; +import org.mongodb.morphia.annotations.Id; +import org.mongodb.morphia.annotations.Property; +import org.mongodb.morphia.annotations.Reference; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by thomas on 01.03.16. + */ +public class Volume { + + public Volume() {} + + public Volume(String name) { + setName(name); + } + + @Id + private ObjectId id; + + @Property + private String name; + + @Reference + private Comic comic; + + @Reference + private List issues = new ArrayList(); + + public ObjectId getId() { + return id; + } + + public void setId(ObjectId id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Comic getComic() { + return comic; + } + + public void setComic(Comic comic) { + this.comic = comic; + } + + public List getIssues() { + return issues; + } + + public void setIssues(List issues) { + this.issues = issues; + } + + @Override + public String toString() { + return name; + } +} diff --git a/java/src/main/java/com/ibtp/kontor/comics/entity/VolumeEntity.java b/java/src/main/java/com/ibtp/kontor/comics/entity/VolumeEntity.java new file mode 100644 index 0000000..6f896ad --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/comics/entity/VolumeEntity.java @@ -0,0 +1,40 @@ +package com.ibtp.kontor.comics.entity; + + +import javax.persistence.*; + +/** + * Created by TPEETZ on 19.01.2015. + */ +@NamedQueries({ + @NamedQuery(name="Volume.findAll", query="SELECT v from VolumeEntity as v"), + @NamedQuery(name="Volume.findByTitle", query="SELECT v from VolumeEntity as v WHERE v.title = :title") +}) + +@Entity +@Table(name = "VOLUME") +public class VolumeEntity { + + private Long id; + + private String title; + + private ComicEntity comic; + + @Id + @GeneratedValue(strategy= GenerationType.AUTO) + public Long getId() { return id; } + + @SuppressWarnings("unused") + private void setId(Long id) { this.id = id; } + + @Column + public String getTitle() { return title; } + + public void setTitle(String title) { this.title = title; } + + @ManyToOne + public ComicEntity getComic() { return comic; } + + public void setComic(ComicEntity comic) { this.comic = comic; } +} diff --git a/java/src/main/java/com/ibtp/kontor/comics/view/ComicsMenu.java b/java/src/main/java/com/ibtp/kontor/comics/view/ComicsMenu.java new file mode 100644 index 0000000..5201a11 --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/comics/view/ComicsMenu.java @@ -0,0 +1,13 @@ +package com.ibtp.kontor.comics.view; + +import javax.swing.*; + +/** + * Created by tpeetz on 12.02.2015. + */ +public class ComicsMenu extends JMenu { + + public ComicsMenu() { + super("Comics"); + } +} diff --git a/java/src/main/java/com/ibtp/kontor/dal/BaseImpl.java b/java/src/main/java/com/ibtp/kontor/dal/BaseImpl.java new file mode 100644 index 0000000..fa22722 --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/dal/BaseImpl.java @@ -0,0 +1,21 @@ +package com.ibtp.kontor.dal; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.persistence.EntityManager; + +/** + * Created by TPEETZ on 16.01.2015. + */ +public class BaseImpl { + + protected BaseImpl() { + Logger logger = LoggerFactory.getLogger(this.getClass().getName()); + logger.info("BaseImpl started"); + } + + protected EntityManager getEntityManager() { + return DatabaseManager.getDatabase().getEntityManager(); + } +} diff --git a/java/src/main/java/com/ibtp/kontor/dal/Database.java b/java/src/main/java/com/ibtp/kontor/dal/Database.java new file mode 100644 index 0000000..67dbda9 --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/dal/Database.java @@ -0,0 +1,11 @@ +package com.ibtp.kontor.dal; + +import javax.persistence.EntityManager; + +/** + * Created by TPEETZ on 21.01.2015. + */ +public interface Database { + + public EntityManager getEntityManager(); +} diff --git a/java/src/main/java/com/ibtp/kontor/dal/DatabaseManager.java b/java/src/main/java/com/ibtp/kontor/dal/DatabaseManager.java new file mode 100644 index 0000000..0ccc25d --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/dal/DatabaseManager.java @@ -0,0 +1,23 @@ +package com.ibtp.kontor.dal; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * Created by TPEETZ on 22.01.2015. + */ +public class DatabaseManager { + + private static Database database; + private static Logger logger = LoggerFactory.getLogger(DatabaseManager.class.getName()); + + public static Database getDatabase() { + logger.info("return " + database.toString()); + return database; + } + + public static void setDatabase(Database database) { + logger.info("set " + database.toString()); + DatabaseManager.database = database; + } +} diff --git a/java/src/main/java/com/ibtp/kontor/dal/LocalDatabase.java b/java/src/main/java/com/ibtp/kontor/dal/LocalDatabase.java new file mode 100644 index 0000000..e0ec9c1 --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/dal/LocalDatabase.java @@ -0,0 +1,104 @@ +package com.ibtp.kontor.dal; + +import org.hibernate.jpa.HibernatePersistenceProvider; +import org.hsqldb.Server; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.persistence.EntityManager; +import javax.persistence.EntityManagerFactory; +import javax.persistence.Persistence; +import javax.persistence.spi.PersistenceProvider; +import javax.persistence.spi.PersistenceProviderResolver; +import javax.persistence.spi.PersistenceProviderResolverHolder; +import java.io.PrintWriter; +import java.util.Arrays; +import java.util.List; + +/** + * Created by TPEETZ on 19.01.2015. + */ +public class LocalDatabase implements Database { + + private static Server server; + private static EntityManagerFactory factory; + private static EntityManager em; + private static Logger logger = LoggerFactory.getLogger(LocalDatabase.class.getName()); + + private LocalDatabase() { + logger.info("LocalDatabase started"); + } + + private static void assureDatabaseRunning() { + if (LocalDatabase.server == null) { + LocalDatabase.startDatabase(); + } + } + + private static void startDatabase() { + Logger logger = LoggerFactory.getLogger(LocalDatabase.class.getName()); + logger.info("startDatabase as kontor in hsqldb_databases/kontor"); + LocalDatabase.server = new Server(); + LocalDatabase.server.setAddress("localhost"); + LocalDatabase.server.setDatabaseName(0, "kontor"); + LocalDatabase.server.setDatabasePath(0, "file:hsqldb_databases/kontor"); + LocalDatabase.server.setPort(2345); + LocalDatabase.server.setTrace(true); + LocalDatabase.server.setLogWriter(new PrintWriter(System.out)); + LocalDatabase.server.start(); + } + + private static void stopDatabase() { + server.shutdown(); + } + + private static EntityManagerFactory getFactory() { + if (LocalDatabase.factory == null) { + LocalDatabase.assureDatabaseRunning(); + PersistenceProviderResolverHolder.setPersistenceProviderResolver(new PersistenceProviderResolver() { + private final List providers_ = Arrays.asList((PersistenceProvider) new HibernatePersistenceProvider()); + + @Override + public void clearCachedProviders() { + // Auto-generated method stub + } + + @Override + public List getPersistenceProviders() { + return providers_; + } + }); + LocalDatabase.factory = Persistence.createEntityManagerFactory("com.ibtp.kontor"); + logger.info("EntityManagerFactory(com.ibtp.kontor) created"); + } + return LocalDatabase.factory; + } + + private static EntityManager getSingleEntityManager() { + return LocalDatabase.em; + } + + private static void setSingleEntityManager(EntityManager manager) { + LocalDatabase.em = manager; + } + + @Override + public EntityManager getEntityManager() { + if (getSingleEntityManager() == null) { + setSingleEntityManager(getFactory().createEntityManager()); + logger.info("EntityManager created"); + } + return getSingleEntityManager(); + } + + @Override + public String toString() { + String serverMessage; + if (LocalDatabase.server == null) { + serverMessage = "server:null"; + } else { + serverMessage = LocalDatabase.server.toString(); + } + return LocalDatabase.class.getName() + " " + serverMessage; + } +} diff --git a/java/src/main/java/com/ibtp/kontor/library/dal/ArticleDao.java b/java/src/main/java/com/ibtp/kontor/library/dal/ArticleDao.java new file mode 100644 index 0000000..f9cd144 --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/library/dal/ArticleDao.java @@ -0,0 +1,23 @@ +package com.ibtp.kontor.library.dal; + +import com.ibtp.kontor.library.entity.ArticleEntity; + +import java.util.List; + +/** + * Created by tpeetz on 23.01.2015. + */ +interface ArticleDao { + + public ArticleEntity getById(Long id); + + public List findByIds(List ids); + + public List findAll(); + + public List findByTitle(String title); + + public ArticleEntity store(ArticleEntity entity); + + public void delete(ArticleEntity entity); +} diff --git a/java/src/main/java/com/ibtp/kontor/library/dal/ArticleImpl.java b/java/src/main/java/com/ibtp/kontor/library/dal/ArticleImpl.java new file mode 100644 index 0000000..ada92d9 --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/library/dal/ArticleImpl.java @@ -0,0 +1,64 @@ +package com.ibtp.kontor.library.dal; + +import com.ibtp.kontor.dal.BaseImpl; +import com.ibtp.kontor.library.entity.ArticleEntity; + +import javax.persistence.EntityManager; +import javax.persistence.Query; +import java.util.List; + +/** + * Created by tpeetz on 23.01.2015. + */ +public class ArticleImpl extends BaseImpl implements ArticleDao { + + @Override + public ArticleEntity getById(Long id) { + Query query = getEntityManager().createNamedQuery("Article.findById"); + query.setParameter("id", id); + return (ArticleEntity)query.getSingleResult(); + } + + @Override + public List findByIds(List ids) { + return null; + } + + @Override + public List findAll() { + Query query = getEntityManager().createNamedQuery("Article.findAll"); + //noinspection unchecked + return query.getResultList(); + } + + @Override + public List findByTitle(String title) { + Query query = getEntityManager().createNamedQuery("Article.findByTitle"); + query.setParameter("title", title); + //noinspection unchecked + return query.getResultList(); + } + + public ArticleEntity addArticle(String title) { + ArticleEntity entity = new ArticleEntity(title); + store(entity); + return entity; + } + + @Override + public ArticleEntity store(ArticleEntity entity) { + EntityManager em = getEntityManager(); + em.getTransaction().begin(); + em.persist(entity); + em.getTransaction().commit(); + return entity; + } + + @Override + public void delete(ArticleEntity entity) { + EntityManager em = getEntityManager(); + em.getTransaction().begin(); + em.remove(entity); + em.getTransaction().commit(); + } +} diff --git a/java/src/main/java/com/ibtp/kontor/library/dal/AuthorDao.java b/java/src/main/java/com/ibtp/kontor/library/dal/AuthorDao.java new file mode 100644 index 0000000..85f4c83 --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/library/dal/AuthorDao.java @@ -0,0 +1,25 @@ +package com.ibtp.kontor.library.dal; + +import com.ibtp.kontor.library.entity.AuthorEntity; + +import java.util.List; + +/** + * Created by tpeetz on 23.01.2015. + */ +interface AuthorDao { + + public AuthorEntity getById(Long id); + + public List findByIds(List ids); + + public List findByName(String name); + + public List findAll(); + + public AuthorEntity addAuthor(String name); + + public AuthorEntity store(AuthorEntity entity); + + public void delete(AuthorEntity entity); +} diff --git a/java/src/main/java/com/ibtp/kontor/library/dal/AuthorImpl.java b/java/src/main/java/com/ibtp/kontor/library/dal/AuthorImpl.java new file mode 100644 index 0000000..573d7d9 --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/library/dal/AuthorImpl.java @@ -0,0 +1,65 @@ +package com.ibtp.kontor.library.dal; + +import com.ibtp.kontor.dal.BaseImpl; +import com.ibtp.kontor.library.entity.AuthorEntity; + +import javax.persistence.EntityManager; +import javax.persistence.Query; +import java.util.List; + +/** + * Created by thomas on 23.01.15. + */ +public class AuthorImpl extends BaseImpl implements AuthorDao { + + public AuthorImpl() {} + + @Override + public AuthorEntity getById(Long id) { + Query query = getEntityManager().createNamedQuery("Author.findById"); + query.setParameter("id", id); + return (AuthorEntity)query.getSingleResult(); + } + + @Override + public List findByIds(List ids) { + return null; + } + + @Override + public List findByName(String name) { + Query query = getEntityManager().createNamedQuery("Author.findByName"); + query.setParameter("name", name); + return query.getResultList(); + } + + @Override + public List findAll() { + Query query = getEntityManager().createNamedQuery("Author.findAll"); + return query.getResultList(); + } + + @Override + public AuthorEntity addAuthor(String name) { + AuthorEntity author = new AuthorEntity(name); + store(author); + return author; + } + + @Override + public AuthorEntity store(AuthorEntity entity) { + EntityManager em = getEntityManager(); + em.getTransaction().begin(); + em.persist(entity); + em.getTransaction().commit(); + return entity; + } + + @Override + public void delete(AuthorEntity entity) { + EntityManager em = getEntityManager(); + em.getTransaction().begin(); + em.remove(entity); + em.getTransaction().commit(); + } +} diff --git a/java/src/main/java/com/ibtp/kontor/library/dal/BookDao.java b/java/src/main/java/com/ibtp/kontor/library/dal/BookDao.java new file mode 100644 index 0000000..d89a1b7 --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/library/dal/BookDao.java @@ -0,0 +1,22 @@ +package com.ibtp.kontor.library.dal; + +import com.ibtp.kontor.library.entity.BookEntity; + +import java.util.Collection; +import java.util.List; + +/** + * Created by tpeetz on 23.01.2015. + */ +interface BookDao { + + public BookEntity getById(Long id); + + public Collection findByIds(List ids); + + public Collection findByName(String name); + + public BookEntity store(BookEntity entity); + + public void delete(BookEntity entity); +} diff --git a/java/src/main/java/com/ibtp/kontor/library/dal/BookImpl.java b/java/src/main/java/com/ibtp/kontor/library/dal/BookImpl.java new file mode 100644 index 0000000..63f0ab1 --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/library/dal/BookImpl.java @@ -0,0 +1,38 @@ +package com.ibtp.kontor.library.dal; + +import com.ibtp.kontor.dal.BaseImpl; +import com.ibtp.kontor.library.entity.BookEntity; + +import java.util.Collection; +import java.util.List; + +/** + * Created by TPEETZ on 27.01.2015. + */ +public class BookImpl extends BaseImpl implements BookDao { + + @Override + public BookEntity getById(Long id) { + return null; + } + + @Override + public Collection findByIds(List ids) { + return null; + } + + @Override + public Collection findByName(String name) { + return null; + } + + @Override + public BookEntity store(BookEntity entity) { + return null; + } + + @Override + public void delete(BookEntity entity) { + + } +} diff --git a/java/src/main/java/com/ibtp/kontor/library/dal/FileDao.java b/java/src/main/java/com/ibtp/kontor/library/dal/FileDao.java new file mode 100644 index 0000000..f123e69 --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/library/dal/FileDao.java @@ -0,0 +1,22 @@ +package com.ibtp.kontor.library.dal; + +import com.ibtp.kontor.library.entity.FileEntity; + +import java.util.Collection; +import java.util.List; + +/** + * Created by tpeetz on 23.01.2015. + */ +interface FileDao { + + public FileEntity getById(Long id); + + public Collection findByIds(List ids); + + public Collection findByName(String name); + + public FileEntity store(FileEntity entity); + + public void delete(FileEntity entity); +} diff --git a/java/src/main/java/com/ibtp/kontor/library/dal/FileImpl.java b/java/src/main/java/com/ibtp/kontor/library/dal/FileImpl.java new file mode 100644 index 0000000..1af2900 --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/library/dal/FileImpl.java @@ -0,0 +1,38 @@ +package com.ibtp.kontor.library.dal; + +import com.ibtp.kontor.dal.BaseImpl; +import com.ibtp.kontor.library.entity.FileEntity; + +import java.util.Collection; +import java.util.List; + +/** + * Created by TPEETZ on 27.01.2015. + */ +public class FileImpl extends BaseImpl implements FileDao { + + @Override + public FileEntity getById(Long id) { + return null; + } + + @Override + public Collection findByIds(List ids) { + return null; + } + + @Override + public Collection findByName(String name) { + return null; + } + + @Override + public FileEntity store(FileEntity entity) { + return null; + } + + @Override + public void delete(FileEntity entity) { + + } +} diff --git a/java/src/main/java/com/ibtp/kontor/library/dal/TitleDao.java b/java/src/main/java/com/ibtp/kontor/library/dal/TitleDao.java new file mode 100644 index 0000000..81da92b --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/library/dal/TitleDao.java @@ -0,0 +1,22 @@ +package com.ibtp.kontor.library.dal; + +import com.ibtp.kontor.library.entity.TitleEntity; + +import java.util.Collection; +import java.util.List; + +/** + * Created by tpeetz on 23.01.2015. + */ +interface TitleDao { + + public TitleEntity getById(Long id); + + public Collection findByIds(List ids); + + public Collection findByName(String name); + + public TitleEntity store(TitleEntity entity); + + public void delete(TitleEntity entity); +} diff --git a/java/src/main/java/com/ibtp/kontor/library/dal/TitleImpl.java b/java/src/main/java/com/ibtp/kontor/library/dal/TitleImpl.java new file mode 100644 index 0000000..410c2c5 --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/library/dal/TitleImpl.java @@ -0,0 +1,38 @@ +package com.ibtp.kontor.library.dal; + +import com.ibtp.kontor.dal.BaseImpl; +import com.ibtp.kontor.library.entity.TitleEntity; + +import java.util.Collection; +import java.util.List; + +/** + * Created by TPEETZ on 27.01.2015. + */ +public class TitleImpl extends BaseImpl implements TitleDao { + + @Override + public TitleEntity getById(Long id) { + return null; + } + + @Override + public Collection findByIds(List ids) { + return null; + } + + @Override + public Collection findByName(String name) { + return null; + } + + @Override + public TitleEntity store(TitleEntity entity) { + return null; + } + + @Override + public void delete(TitleEntity entity) { + + } +} diff --git a/java/src/main/java/com/ibtp/kontor/library/entity/ArticleEntity.java b/java/src/main/java/com/ibtp/kontor/library/entity/ArticleEntity.java new file mode 100644 index 0000000..d61eda5 --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/library/entity/ArticleEntity.java @@ -0,0 +1,56 @@ +package com.ibtp.kontor.library.entity; + +import javax.persistence.*; + +/** + * Created by TPEETZ on 23.01.2015. + */ +@NamedQueries({ + @NamedQuery(name="Article.findAll", query="SELECT a from ArticleEntity as a"), + @NamedQuery(name="Article.findByTitle", query="SELECT a from ArticleEntity as a WHERE a.title = :title") +}) + +@Entity +@Table(name = "ARTICLE") +public class ArticleEntity { + + private Long id; + + private String title; + + private AuthorEntity author; + + public ArticleEntity() {} + + public ArticleEntity(String title) { + setTitle(title); + } + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + @Column + public String getTitle() { + return title; + } + + void setTitle(String title) { + this.title = title; + } + + @ManyToOne + public AuthorEntity getAuthor() { + return author; + } + + public void setAuthor(AuthorEntity author) { + this.author = author; + } +} diff --git a/java/src/main/java/com/ibtp/kontor/library/entity/AuthorEntity.java b/java/src/main/java/com/ibtp/kontor/library/entity/AuthorEntity.java new file mode 100644 index 0000000..63a6f4b --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/library/entity/AuthorEntity.java @@ -0,0 +1,62 @@ +package com.ibtp.kontor.library.entity; + +import javax.persistence.*; +import java.util.ArrayList; +import java.util.Collection; + +/** + * Created by TPEETZ on 23.01.2015. + */ +@NamedQueries({ + @NamedQuery(name="Author.findAll", query="SELECT a from AuthorEntity as a"), + @NamedQuery(name="Author.findById", query="SELECT a from AuthorEntity as a WHERE a.id = :id"), + @NamedQuery(name="Author.findByName", query="SELECT a from AuthorEntity as a WHERE a.name = :name") +}) +@Entity +@Table(name="AUTHOR") +public class AuthorEntity { + + private Long id; + + private String name; + + private Collection books = new ArrayList(); + + private Collection articles = new ArrayList(); + + public AuthorEntity() {} + + public AuthorEntity(String name) { + setName(name); + } + + @Id + @GeneratedValue(strategy= GenerationType.AUTO) + public Long getId() { return id; } + + @SuppressWarnings("unused") + private void setId(Long id) { this.id = id; } + + @Column + public String getName() { return name; } + + void setName(String name) { this.name = name; } + + @OneToMany(mappedBy="author", cascade=CascadeType.REMOVE) + public Collection getBooks() { + return books; + } + + public void setBooks(Collection books) { + this.books = books; + } + + @OneToMany(mappedBy="author", cascade=CascadeType.REMOVE) + public Collection getArticles() { + return articles; + } + + public void setArticles(Collection articles) { + this.articles = articles; + } +} diff --git a/java/src/main/java/com/ibtp/kontor/library/entity/BookEntity.java b/java/src/main/java/com/ibtp/kontor/library/entity/BookEntity.java new file mode 100644 index 0000000..b57705c --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/library/entity/BookEntity.java @@ -0,0 +1,96 @@ +package com.ibtp.kontor.library.entity; + +import javax.persistence.*; + +/** + * Created by TPEETZ on 23.01.2015. + */ +@Entity +@Table(name = "BOOK") +public class BookEntity { + + private Long id; + + private String title; + + private AuthorEntity author; + + private String publisher; + + private String isbn; + + private Long page; + + private String edition; + + public BookEntity() {} + + public BookEntity(String title) { + setTitle(title); + } + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + public Long getId() { + return id; + } + + /* unused */ + public void setId(Long id) { + this.id = id; + } + + @Column + public String getTitle() { + return title; + } + + void setTitle(String title) { + this.title = title; + } + + @ManyToOne + public AuthorEntity getAuthor() { + return author; + } + + public void setAuthor(AuthorEntity author) { + this.author = author; + } + + @Column + public String getIsbn() { + return isbn; + } + + public void setIsbn(String isbn) { + this.isbn = isbn; + } + + @Column + public Long getPage() { + return page; + } + + public void setPage(Long page) { + this.page = page; + } + + @Column + public String getEdition() { + return edition; + } + + public void setEdition(String edition) { + this.edition = edition; + } + + @Column + public String getPublisher() { + return publisher; + } + + public void setPublisher(String publisher) { + this.publisher = publisher; + } +} diff --git a/java/src/main/java/com/ibtp/kontor/library/entity/FileEntity.java b/java/src/main/java/com/ibtp/kontor/library/entity/FileEntity.java new file mode 100644 index 0000000..05f4577 --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/library/entity/FileEntity.java @@ -0,0 +1,41 @@ +package com.ibtp.kontor.library.entity; + +import javax.persistence.*; + +/** + * Created by TPEETZ on 23.01.2015. + */ +@Entity +@Table(name = "FILE") +public class FileEntity { + + private Long id; + + private String title; + + public FileEntity() {} + + public FileEntity(String title) { + setTitle(title); + } + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + public Long getId() { + return id; + } + + /* unused */ + public void setId(Long id) { + this.id = id; + } + + @Column + public String getTitle() { + return title; + } + + void setTitle(String title) { + this.title = title; + } +} diff --git a/java/src/main/java/com/ibtp/kontor/library/entity/TitleEntity.java b/java/src/main/java/com/ibtp/kontor/library/entity/TitleEntity.java new file mode 100644 index 0000000..ba25eb9 --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/library/entity/TitleEntity.java @@ -0,0 +1,27 @@ +package com.ibtp.kontor.library.entity; + +import javax.persistence.*; + +/** + * Created by TPEETZ on 23.01.2015. + */ +@Entity +@Table(name = "TITLE") +public class TitleEntity { + + private Long id; + + private String title; + + @Id + @GeneratedValue(strategy= GenerationType.AUTO) + public Long getId() { return id; } + + @SuppressWarnings("unused") + private void setId(Long id) { this.id = id; } + + @Column + public String getTitle() { return title; } + + public void setTitle(String title) { this.title = title; } +} diff --git a/java/src/main/java/com/ibtp/kontor/library/view/LibraryMenu.java b/java/src/main/java/com/ibtp/kontor/library/view/LibraryMenu.java new file mode 100644 index 0000000..0b97e27 --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/library/view/LibraryMenu.java @@ -0,0 +1,13 @@ +package com.ibtp.kontor.library.view; + +import javax.swing.*; + +/** + * Created by tpeetz on 12.02.2015. + */ +public class LibraryMenu extends JMenu { + + public LibraryMenu() { + super("Library"); + } +} diff --git a/java/src/main/java/com/ibtp/kontor/tradingcards/dal/BaseSetDao.java b/java/src/main/java/com/ibtp/kontor/tradingcards/dal/BaseSetDao.java new file mode 100644 index 0000000..29692d4 --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/tradingcards/dal/BaseSetDao.java @@ -0,0 +1,22 @@ +package com.ibtp.kontor.tradingcards.dal; + +import com.ibtp.kontor.tradingcards.entity.BaseSetEntity; + +import java.util.Collection; +import java.util.List; + +/** + * Created by TPEETZ on 27.01.2015. + */ +interface BaseSetDao { + + public BaseSetEntity getById(Long id); + + public Collection findByIds(List ids); + + public Collection findByName(String name); + + public BaseSetEntity store(BaseSetEntity entity); + + public void delete(BaseSetEntity entity); +} diff --git a/java/src/main/java/com/ibtp/kontor/tradingcards/dal/BaseSetImpl.java b/java/src/main/java/com/ibtp/kontor/tradingcards/dal/BaseSetImpl.java new file mode 100644 index 0000000..9e584a4 --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/tradingcards/dal/BaseSetImpl.java @@ -0,0 +1,51 @@ +package com.ibtp.kontor.tradingcards.dal; + +import com.ibtp.kontor.dal.BaseImpl; +import com.ibtp.kontor.tradingcards.entity.BaseSetEntity; + +import javax.persistence.EntityManager; +import javax.persistence.Query; +import java.util.Collection; +import java.util.List; + +/** + * Created by TPEETZ on 27.01.2015. + */ +public class BaseSetImpl extends BaseImpl implements BaseSetDao { + + @Override + public BaseSetEntity getById(Long id) { + Query query = getEntityManager().createNamedQuery("BaseSet.findById"); + query.setParameter("id", id); + return (BaseSetEntity)query.getSingleResult(); + } + + @Override + public Collection findByIds(List ids) { + return null; + } + + @Override + public Collection findByName(String name) { + Query query = getEntityManager().createNamedQuery("BaseSet.findByName"); + query.setParameter("name", name); + return query.getResultList(); + } + + @Override + public BaseSetEntity store(BaseSetEntity entity) { + EntityManager em = getEntityManager(); + em.getTransaction().begin(); + em.persist(entity); + em.getTransaction().commit(); + return entity; + } + + @Override + public void delete(BaseSetEntity entity) { + EntityManager em = getEntityManager(); + em.getTransaction().begin(); + em.remove(entity); + em.getTransaction().commit(); + } +} diff --git a/java/src/main/java/com/ibtp/kontor/tradingcards/dal/InsertDao.java b/java/src/main/java/com/ibtp/kontor/tradingcards/dal/InsertDao.java new file mode 100644 index 0000000..c68790f --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/tradingcards/dal/InsertDao.java @@ -0,0 +1,22 @@ +package com.ibtp.kontor.tradingcards.dal; + +import com.ibtp.kontor.tradingcards.entity.InsertEntity; + +import java.util.Collection; +import java.util.List; + +/** + * Created by TPEETZ on 27.01.2015. + */ +interface InsertDao { + + public InsertEntity getById(Long id); + + public Collection findByIds(List ids); + + public Collection findByName(String name); + + public InsertEntity store(InsertEntity entity); + + public void delete(InsertEntity entity); +} diff --git a/java/src/main/java/com/ibtp/kontor/tradingcards/dal/InsertImpl.java b/java/src/main/java/com/ibtp/kontor/tradingcards/dal/InsertImpl.java new file mode 100644 index 0000000..598763c --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/tradingcards/dal/InsertImpl.java @@ -0,0 +1,38 @@ +package com.ibtp.kontor.tradingcards.dal; + +import com.ibtp.kontor.dal.BaseImpl; +import com.ibtp.kontor.tradingcards.entity.InsertEntity; + +import java.util.Collection; +import java.util.List; + +/** + * Created by tpeetz on 27.01.2015. + */ +public class InsertImpl extends BaseImpl implements InsertDao { + + @Override + public InsertEntity getById(Long id) { + return null; + } + + @Override + public Collection findByIds(List ids) { + return null; + } + + @Override + public Collection findByName(String name) { + return null; + } + + @Override + public InsertEntity store(InsertEntity entity) { + return null; + } + + @Override + public void delete(InsertEntity entity) { + + } +} diff --git a/java/src/main/java/com/ibtp/kontor/tradingcards/dal/ManufacturerDao.java b/java/src/main/java/com/ibtp/kontor/tradingcards/dal/ManufacturerDao.java new file mode 100644 index 0000000..451d18b --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/tradingcards/dal/ManufacturerDao.java @@ -0,0 +1,29 @@ +package com.ibtp.kontor.tradingcards.dal; + + +import com.ibtp.kontor.tradingcards.entity.BaseSetEntity; +import com.ibtp.kontor.tradingcards.entity.ManufacturerEntity; + +import java.util.Collection; +import java.util.List; + +/** + * + * @author tpeetz + */ +interface ManufacturerDao { + + public ManufacturerEntity getById(Long id); + + public Collection findByIds(List ids); + + public Collection findByName(String name); + + public ManufacturerEntity assignBaseSet(ManufacturerEntity manufacturer, BaseSetEntity baseSet); + + public ManufacturerEntity addManufacturer(String name); + + public ManufacturerEntity store(ManufacturerEntity entity); + + public void delete(ManufacturerEntity entity); +} diff --git a/java/src/main/java/com/ibtp/kontor/tradingcards/dal/ManufacturerImpl.java b/java/src/main/java/com/ibtp/kontor/tradingcards/dal/ManufacturerImpl.java new file mode 100644 index 0000000..58c2fd6 --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/tradingcards/dal/ManufacturerImpl.java @@ -0,0 +1,65 @@ +package com.ibtp.kontor.tradingcards.dal; + +import com.ibtp.kontor.dal.BaseImpl; +import com.ibtp.kontor.tradingcards.entity.BaseSetEntity; +import com.ibtp.kontor.tradingcards.entity.ManufacturerEntity; + +import java.util.List; +import javax.persistence.EntityManager; +import javax.persistence.Query; + +/** + * + * @author tpeetz + */ +public class ManufacturerImpl extends BaseImpl implements ManufacturerDao { + + @Override + public ManufacturerEntity getById(Long id) { + Query q = getEntityManager().createNamedQuery("Manufacturer.findById"); + q.setParameter("id", id); + return (ManufacturerEntity)q.getSingleResult(); + } + + @Override + public List findByIds(List ids) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @SuppressWarnings("unchecked") + @Override + public List findByName(String name) { + Query q = getEntityManager().createNamedQuery("Manufacturer.findByName"); + q.setParameter("name", name); + return q.getResultList(); + } + + @Override + public ManufacturerEntity assignBaseSet(ManufacturerEntity comic, BaseSetEntity baseSet) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @Override + public ManufacturerEntity addManufacturer(String name) { + ManufacturerEntity manufacturer = new ManufacturerEntity(name); + store(manufacturer); + return manufacturer; + } + + @Override + public ManufacturerEntity store(ManufacturerEntity entity) { + EntityManager em = getEntityManager(); + em.getTransaction().begin(); + em.persist(entity); + em.getTransaction().commit(); + return entity; + } + + @Override + public void delete(ManufacturerEntity entity) { + EntityManager em = getEntityManager(); + em.getTransaction().begin(); + em.remove(entity); + em.getTransaction().commit(); + } +} diff --git a/java/src/main/java/com/ibtp/kontor/tradingcards/dal/ParallelSetDao.java b/java/src/main/java/com/ibtp/kontor/tradingcards/dal/ParallelSetDao.java new file mode 100644 index 0000000..c4d36ba --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/tradingcards/dal/ParallelSetDao.java @@ -0,0 +1,22 @@ +package com.ibtp.kontor.tradingcards.dal; + +import com.ibtp.kontor.tradingcards.entity.ParallelSetEntity; + +import java.util.Collection; +import java.util.List; + +/** + * Created by TPEETZ on 27.01.2015. + */ +interface ParallelSetDao { + + public ParallelSetEntity getById(Long id); + + public Collection findByIds(List ids); + + public Collection findByName(String name); + + public ParallelSetEntity store(ParallelSetEntity entity); + + public void delete(ParallelSetEntity entity); +} diff --git a/java/src/main/java/com/ibtp/kontor/tradingcards/dal/ParallelSetImpl.java b/java/src/main/java/com/ibtp/kontor/tradingcards/dal/ParallelSetImpl.java new file mode 100644 index 0000000..cb604a0 --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/tradingcards/dal/ParallelSetImpl.java @@ -0,0 +1,38 @@ +package com.ibtp.kontor.tradingcards.dal; + +import com.ibtp.kontor.dal.BaseImpl; +import com.ibtp.kontor.tradingcards.entity.ParallelSetEntity; + +import java.util.Collection; +import java.util.List; + +/** + * Created by tpeetz on 27.01.2015. + */ +public class ParallelSetImpl extends BaseImpl implements ParallelSetDao { + + @Override + public ParallelSetEntity getById(Long id) { + return null; + } + + @Override + public Collection findByIds(List ids) { + return null; + } + + @Override + public Collection findByName(String name) { + return null; + } + + @Override + public ParallelSetEntity store(ParallelSetEntity entity) { + return null; + } + + @Override + public void delete(ParallelSetEntity entity) { + + } +} diff --git a/java/src/main/java/com/ibtp/kontor/tradingcards/dal/PlayerDao.java b/java/src/main/java/com/ibtp/kontor/tradingcards/dal/PlayerDao.java new file mode 100644 index 0000000..11d045e --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/tradingcards/dal/PlayerDao.java @@ -0,0 +1,24 @@ +package com.ibtp.kontor.tradingcards.dal; + +import com.ibtp.kontor.tradingcards.entity.PlayerEntity; + +import java.util.Collection; +import java.util.List; + +/** + * Created by TPEETZ on 27.01.2015. + */ +interface PlayerDao { + + public PlayerEntity getById(Long id); + + public Collection findByIds(List ids); + + public Collection findByName(String name); + + public PlayerEntity addPlayer(String name); + + public PlayerEntity store(PlayerEntity entity); + + public void delete(PlayerEntity entity); +} diff --git a/java/src/main/java/com/ibtp/kontor/tradingcards/dal/PlayerImpl.java b/java/src/main/java/com/ibtp/kontor/tradingcards/dal/PlayerImpl.java new file mode 100644 index 0000000..c3d5104 --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/tradingcards/dal/PlayerImpl.java @@ -0,0 +1,43 @@ +package com.ibtp.kontor.tradingcards.dal; + +import com.ibtp.kontor.dal.BaseImpl; +import com.ibtp.kontor.tradingcards.entity.PlayerEntity; + +import java.util.Collection; +import java.util.List; + +/** + * Created by tpeetz on 27.01.2015. + */ +public class PlayerImpl extends BaseImpl implements PlayerDao { + + @Override + public PlayerEntity getById(Long id) { + return null; + } + + @Override + public Collection findByIds(List ids) { + return null; + } + + @Override + public Collection findByName(String name) { + return null; + } + + @Override + public PlayerEntity addPlayer(String name) { + return null; + } + + @Override + public PlayerEntity store(PlayerEntity entity) { + return null; + } + + @Override + public void delete(PlayerEntity entity) { + + } +} diff --git a/java/src/main/java/com/ibtp/kontor/tradingcards/dal/PositionDao.java b/java/src/main/java/com/ibtp/kontor/tradingcards/dal/PositionDao.java new file mode 100644 index 0000000..9970491 --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/tradingcards/dal/PositionDao.java @@ -0,0 +1,26 @@ +package com.ibtp.kontor.tradingcards.dal; + +import com.ibtp.kontor.tradingcards.entity.PositionEntity; + +import java.util.Collection; +import java.util.List; + +/** + * Created by TPEETZ on 27.01.2015. + */ +interface PositionDao { + + public PositionEntity getById(Long id); + + public Collection findByIds(List ids); + + public Collection findByName(String name); + + public Collection findAll(); + + public PositionEntity addPosition(String name); + + public PositionEntity store(PositionEntity entity); + + public void delete(PositionEntity entity); +} diff --git a/java/src/main/java/com/ibtp/kontor/tradingcards/dal/PositionImpl.java b/java/src/main/java/com/ibtp/kontor/tradingcards/dal/PositionImpl.java new file mode 100644 index 0000000..e2a22ae --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/tradingcards/dal/PositionImpl.java @@ -0,0 +1,65 @@ +package com.ibtp.kontor.tradingcards.dal; + +import com.ibtp.kontor.dal.BaseImpl; +import com.ibtp.kontor.tradingcards.entity.PositionEntity; + +import java.util.Collection; +import java.util.List; + +import javax.persistence.EntityManager; +import javax.persistence.Query; + +/** + * Created by tpeetz on 27.01.2015. + */ +public class PositionImpl extends BaseImpl implements PositionDao { + + @Override + public PositionEntity getById(Long id) { + Query query = getEntityManager().createNamedQuery("Position.findById"); + query.setParameter("id", id); + return (PositionEntity)query.getSingleResult(); + } + + @Override + public Collection findByIds(List ids) { + return null; + } + + @Override + public Collection findByName(String name) { + Query query = getEntityManager().createNamedQuery("Position.findByName"); + query.setParameter("name", name); + return query.getResultList(); + } + + @Override + public Collection findAll() { + Query query = getEntityManager().createNamedQuery("Position.findAll"); + return query.getResultList(); + } + + @Override + public PositionEntity addPosition(String name) { + PositionEntity position = new PositionEntity(name); + store(position); + return position; + } + + @Override + public PositionEntity store(PositionEntity entity) { + EntityManager em = getEntityManager(); + em.getTransaction().begin(); + em.persist(entity); + em.getTransaction().commit(); + return entity; + } + + @Override + public void delete(PositionEntity entity) { + EntityManager em = getEntityManager(); + em.getTransaction().begin(); + em.remove(entity); + em.getTransaction().commit(); + } +} diff --git a/java/src/main/java/com/ibtp/kontor/tradingcards/dal/SportCardDao.java b/java/src/main/java/com/ibtp/kontor/tradingcards/dal/SportCardDao.java new file mode 100644 index 0000000..25fb244 --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/tradingcards/dal/SportCardDao.java @@ -0,0 +1,22 @@ +package com.ibtp.kontor.tradingcards.dal; + +import com.ibtp.kontor.tradingcards.entity.SportCardEntity; + +import java.util.Collection; +import java.util.List; + +/** + * Created by TPEETZ on 27.01.2015. + */ +interface SportCardDao { + + public SportCardEntity getById(Long id); + + public Collection findByIds(List ids); + + public Collection findByName(String name); + + public SportCardEntity store(SportCardEntity entity); + + public void delete(SportCardEntity entity); +} diff --git a/java/src/main/java/com/ibtp/kontor/tradingcards/dal/SportCardImpl.java b/java/src/main/java/com/ibtp/kontor/tradingcards/dal/SportCardImpl.java new file mode 100644 index 0000000..5939d2c --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/tradingcards/dal/SportCardImpl.java @@ -0,0 +1,38 @@ +package com.ibtp.kontor.tradingcards.dal; + +import com.ibtp.kontor.dal.BaseImpl; +import com.ibtp.kontor.tradingcards.entity.SportCardEntity; + +import java.util.Collection; +import java.util.List; + +/** + * Created by tpeetz on 27.01.2015. + */ +public class SportCardImpl extends BaseImpl implements SportCardDao { + + @Override + public SportCardEntity getById(Long id) { + return null; + } + + @Override + public Collection findByIds(List ids) { + return null; + } + + @Override + public Collection findByName(String name) { + return null; + } + + @Override + public SportCardEntity store(SportCardEntity entity) { + return null; + } + + @Override + public void delete(SportCardEntity entity) { + + } +} diff --git a/java/src/main/java/com/ibtp/kontor/tradingcards/dal/SportDao.java b/java/src/main/java/com/ibtp/kontor/tradingcards/dal/SportDao.java new file mode 100644 index 0000000..f5ba51e --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/tradingcards/dal/SportDao.java @@ -0,0 +1,26 @@ +package com.ibtp.kontor.tradingcards.dal; + +import com.ibtp.kontor.tradingcards.entity.SportEntity; + +import java.util.Collection; +import java.util.List; + +/** + * + * @author tpeetz + */ +interface SportDao { + public SportEntity getById(Long id); + + public Collection findByIds(List ids); + + public Collection findByName(String name); + + public Collection findAll(); + + public SportEntity addSport(String name); + + public SportEntity store(SportEntity entity); + + public void delete(SportEntity entity); +} diff --git a/java/src/main/java/com/ibtp/kontor/tradingcards/dal/SportImpl.java b/java/src/main/java/com/ibtp/kontor/tradingcards/dal/SportImpl.java new file mode 100644 index 0000000..223236d --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/tradingcards/dal/SportImpl.java @@ -0,0 +1,64 @@ +package com.ibtp.kontor.tradingcards.dal; + +import com.ibtp.kontor.dal.BaseImpl; +import com.ibtp.kontor.tradingcards.entity.SportEntity; + +import java.util.Collection; +import java.util.List; +import javax.persistence.EntityManager; +import javax.persistence.Query; + +/** + * + * @author tpeetz + */ +public class SportImpl extends BaseImpl implements SportDao { + + @Override + public SportEntity getById(Long id) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @Override + public List findByIds(List ids) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @SuppressWarnings("unchecked") + @Override + public List findByName(String name) { + Query query = getEntityManager().createNamedQuery("Sport.findByName"); + query.setParameter("name", name); + return query.getResultList(); + } + + @Override + public Collection findAll() { + Query query = getEntityManager().createNamedQuery("Sport.findAll"); + return query.getResultList(); + } + + @Override + public SportEntity addSport(String name) { + SportEntity sport = new SportEntity(name); + store(sport); + return sport; + } + + @Override + public SportEntity store(SportEntity entity) { + EntityManager em = getEntityManager(); + em.getTransaction().begin(); + em.persist(entity); + em.getTransaction().commit(); + return entity; + } + + @Override + public void delete(SportEntity entity) { + EntityManager em = getEntityManager(); + em.getTransaction().begin(); + em.remove(entity); + em.getTransaction().commit(); + } +} diff --git a/java/src/main/java/com/ibtp/kontor/tradingcards/dal/TeamDao.java b/java/src/main/java/com/ibtp/kontor/tradingcards/dal/TeamDao.java new file mode 100644 index 0000000..c2f9eff --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/tradingcards/dal/TeamDao.java @@ -0,0 +1,26 @@ +package com.ibtp.kontor.tradingcards.dal; + +import com.ibtp.kontor.tradingcards.entity.SportEntity; +import com.ibtp.kontor.tradingcards.entity.TeamEntity; + +import java.util.Collection; +import java.util.List; + +/** + * Created by TPEETZ on 19.01.2015. + */ +interface TeamDao { + public TeamEntity getById(Long id); + + public Collection findByIds(List ids); + + public Collection findByName(String name); + + public Collection findAll(); + + public TeamEntity addTeam(String name, SportEntity sport); + + public TeamEntity store(TeamEntity entity); + + public void delete(TeamEntity entity); +} diff --git a/java/src/main/java/com/ibtp/kontor/tradingcards/dal/TeamImpl.java b/java/src/main/java/com/ibtp/kontor/tradingcards/dal/TeamImpl.java new file mode 100644 index 0000000..7fb8244 --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/tradingcards/dal/TeamImpl.java @@ -0,0 +1,66 @@ +package com.ibtp.kontor.tradingcards.dal; + +import com.ibtp.kontor.dal.BaseImpl; +import com.ibtp.kontor.tradingcards.entity.SportEntity; +import com.ibtp.kontor.tradingcards.entity.TeamEntity; + +import javax.persistence.EntityManager; +import javax.persistence.Query; +import java.util.Collection; +import java.util.List; + +/** + * Created by TPEETZ on 19.01.2015. + */ +public class TeamImpl extends BaseImpl implements TeamDao { + + @Override + public TeamEntity getById(Long id) { + Query query = getEntityManager().createNamedQuery("Team.findById"); + query.setParameter("id", id); + return (TeamEntity)query.getSingleResult(); + } + + @Override + public Collection findByIds(List ids) { + return null; + } + + @Override + public Collection findByName(String name) { + Query query = getEntityManager().createNamedQuery("Team.findByName"); + query.setParameter("name", name); + return query.getResultList(); + } + + @Override + public Collection findAll() { + Query query = getEntityManager().createNamedQuery("Team.findAll"); + return query.getResultList(); + } + + @Override + public TeamEntity addTeam(String name, SportEntity sport) { + TeamEntity team = new TeamEntity(name); + team.setSport(sport); + store(team); + return team; + } + + @Override + public TeamEntity store(TeamEntity entity) { + EntityManager em = getEntityManager(); + em.getTransaction().begin(); + em.persist(entity); + em.getTransaction().commit(); + return entity; + } + + @Override + public void delete(TeamEntity entity) { + EntityManager em = getEntityManager(); + em.getTransaction().begin(); + em.remove(entity); + em.getTransaction().commit(); + } +} diff --git a/java/src/main/java/com/ibtp/kontor/tradingcards/entity/BaseSetEntity.java b/java/src/main/java/com/ibtp/kontor/tradingcards/entity/BaseSetEntity.java new file mode 100644 index 0000000..3111e98 --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/tradingcards/entity/BaseSetEntity.java @@ -0,0 +1,67 @@ +package com.ibtp.kontor.tradingcards.entity; + +import java.util.ArrayList; +import java.util.Collection; + +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.ManyToOne; +import javax.persistence.OneToMany; +import javax.persistence.Table; + +@Entity +@Table(name="BASESET") +public class BaseSetEntity { + private Long id; + private String name; + private ManufacturerEntity manufacturer; + private Collection parallelSets = new ArrayList(); + private Collection inserts = new ArrayList(); + + @Id + @GeneratedValue(strategy=GenerationType.AUTO) + public Long getId() { return id; } + + @SuppressWarnings("unused") + private void setId(Long id) { this.id = id; } + + @Column + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @ManyToOne + public ManufacturerEntity getManufacturer() { + return manufacturer; + } + + public void setManufacturer(ManufacturerEntity manufacturer) { + this.manufacturer = manufacturer; + } + + @OneToMany(mappedBy="baseSet", cascade=CascadeType.REMOVE) + public Collection getParallelSets() { + return parallelSets; + } + + public void setParallelSets(Collection parallelSets) { + this.parallelSets = parallelSets; + } + + @OneToMany(mappedBy="baseSet", cascade=CascadeType.REMOVE) + public Collection getInserts() { + return inserts; + } + + public void setInserts(Collection inserts) { + this.inserts = inserts; + } +} diff --git a/java/src/main/java/com/ibtp/kontor/tradingcards/entity/InsertEntity.java b/java/src/main/java/com/ibtp/kontor/tradingcards/entity/InsertEntity.java new file mode 100644 index 0000000..ce59037 --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/tradingcards/entity/InsertEntity.java @@ -0,0 +1,74 @@ +package com.ibtp.kontor.tradingcards.entity; + +import java.util.ArrayList; +import java.util.Collection; +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.ManyToOne; +import javax.persistence.NamedQueries; +import javax.persistence.NamedQuery; +import javax.persistence.OneToMany; +import javax.persistence.Table; + +@NamedQueries({ + @NamedQuery(name="InsertSet.findAll", query="SELECT i from InsertEntity as i"), + @NamedQuery(name="InsertSet.findById", query="SELECT i from InsertEntity as i WHERE i.id = :id"), + @NamedQuery(name="InsertSet.findByName", query="SELECT i from InsertEntity as i WHERE i.name = :name") +}) + +@Entity +@Table(name="INSERTSET") +public class InsertEntity { + private Long id; + private String name; + private ManufacturerEntity manufacturer; + private BaseSetEntity baseSet; + private Collection sportCard = new ArrayList(); + + @Id + @GeneratedValue(strategy=GenerationType.AUTO) + public Long getId() { return id; } + + @SuppressWarnings("unused") + private void setId(Long id) { this.id = id; } + + @Column + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @ManyToOne + public ManufacturerEntity getManufacturer() { + return manufacturer; + } + + public void setManufacturer(ManufacturerEntity manufacturer) { + this.manufacturer = manufacturer; + } + + @ManyToOne + public BaseSetEntity getBaseSet() { + return baseSet; + } + + public void setBaseSet(BaseSetEntity baseSet) { + this.baseSet = baseSet; + } + + @OneToMany(mappedBy="insert", cascade=CascadeType.REMOVE) + public Collection getSportCard() { + return sportCard; + } + + public void setSportCard(Collection sportCard) { + this.sportCard = sportCard; + } +} diff --git a/java/src/main/java/com/ibtp/kontor/tradingcards/entity/ManufacturerEntity.java b/java/src/main/java/com/ibtp/kontor/tradingcards/entity/ManufacturerEntity.java new file mode 100644 index 0000000..f83da2a --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/tradingcards/entity/ManufacturerEntity.java @@ -0,0 +1,78 @@ +package com.ibtp.kontor.tradingcards.entity; + +import java.util.ArrayList; +import java.util.Collection; + +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.NamedQueries; +import javax.persistence.NamedQuery; +import javax.persistence.OneToMany; +import javax.persistence.Table; + +@NamedQueries({ + @NamedQuery(name="Manufacturer.findAll", query="SELECT m from ManufacturerEntity as m"), + @NamedQuery(name="Manufacturer.findByName", query="SELECT m from ManufacturerEntity as m WHERE m.name = :name") +}) + +@Entity +@Table(name="MANUFACTURER") +public class ManufacturerEntity { + + private Long id; + private String name; + private Collection baseSets = new ArrayList(); + private Collection parallelSets = new ArrayList(); + private Collection inserts = new ArrayList(); + + public ManufacturerEntity(String name) { + setName(name); + } + + @Id + @GeneratedValue(strategy=GenerationType.AUTO) + public Long getId() { return id; } + + @SuppressWarnings("unused") + private void setId(Long id) { this.id = id; } + + @Column + public String getName() { + return name; + } + + void setName(String name) { + this.name = name; + } + + @OneToMany(mappedBy="manufacturer", cascade=CascadeType.REMOVE) + public Collection getBaseSets() { + return baseSets; + } + + public void setBaseSets(Collection baseSets) { + this.baseSets = baseSets; + } + + @OneToMany(mappedBy="manufacturer", cascade=CascadeType.REMOVE) + public Collection getParallelSets() { + return parallelSets; + } + + public void setParallelSets(Collection parallelSets) { + this.parallelSets = parallelSets; + } + + @OneToMany(mappedBy="manufacturer", cascade=CascadeType.REMOVE) + public Collection getInserts() { + return inserts; + } + + public void setInserts(Collection inserts) { + this.inserts = inserts; + } +} diff --git a/java/src/main/java/com/ibtp/kontor/tradingcards/entity/ParallelSetEntity.java b/java/src/main/java/com/ibtp/kontor/tradingcards/entity/ParallelSetEntity.java new file mode 100644 index 0000000..0ce0c69 --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/tradingcards/entity/ParallelSetEntity.java @@ -0,0 +1,53 @@ +package com.ibtp.kontor.tradingcards.entity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.ManyToOne; +import javax.persistence.Table; + +@Entity +@Table(name="PARALLELSET") +public class ParallelSetEntity { + private Long id; + private String name; + private ManufacturerEntity manufacturer; + + private BaseSetEntity baseSet; + + @Id + @GeneratedValue(strategy=GenerationType.AUTO) + public Long getId() { return id; } + + @SuppressWarnings("unused") + private void setId(Long id) { this.id = id; } + + @Column + public String getName() { + return name; + } + + @ManyToOne + public ManufacturerEntity getManufacturer() { + return manufacturer; + } + + public void setManufacturer(ManufacturerEntity manufacturer) { + this.manufacturer = manufacturer; + } + + public void setName(String name) { + this.name = name; + } + + @ManyToOne + public BaseSetEntity getBaseSet() { + return baseSet; + } + + public void setBaseSet(BaseSetEntity baseSet) { + this.baseSet = baseSet; + } +} diff --git a/java/src/main/java/com/ibtp/kontor/tradingcards/entity/PlayerEntity.java b/java/src/main/java/com/ibtp/kontor/tradingcards/entity/PlayerEntity.java new file mode 100644 index 0000000..7c19d70 --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/tradingcards/entity/PlayerEntity.java @@ -0,0 +1,46 @@ +package com.ibtp.kontor.tradingcards.entity; + +import java.util.ArrayList; +import java.util.Collection; + +import javax.persistence.CascadeType; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.ManyToOne; +import javax.persistence.OneToMany; +import javax.persistence.Table; + +@Entity +@Table(name="PLAYER") +public class PlayerEntity { + private Long id; + private TeamEntity team; + private Collection cards = new ArrayList(); + + @Id + @GeneratedValue(strategy=GenerationType.AUTO) + public Long getId() { return id; } + + @SuppressWarnings("unused") + private void setId(Long id) { this.id = id; } + + @ManyToOne + public TeamEntity getTeam() { + return team; + } + + public void setTeam(TeamEntity team) { + this.team = team; + } + + @OneToMany(mappedBy="player", cascade=CascadeType.REMOVE) + public Collection getCards() { + return cards; + } + + public void setCards(Collection cards) { + this.cards = cards; + } +} diff --git a/java/src/main/java/com/ibtp/kontor/tradingcards/entity/PositionEntity.java b/java/src/main/java/com/ibtp/kontor/tradingcards/entity/PositionEntity.java new file mode 100644 index 0000000..0e5c6b8 --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/tradingcards/entity/PositionEntity.java @@ -0,0 +1,66 @@ +package com.ibtp.kontor.tradingcards.entity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.ManyToOne; +import javax.persistence.NamedQuery; +import javax.persistence.NamedQueries; +import javax.persistence.Table; + +@NamedQueries({ + @NamedQuery(name="Position.findAll", query="SELECT p from PositionEntity as p"), + @NamedQuery(name="Position.findByName", query="SELECT p from PositionEntity as p WHERE p.name = :name") +}) + +@Entity +@Table(name="POSITION") +public class PositionEntity { + + private Long id; + private String name; + private String shortName; + private SportEntity sport; + + public PositionEntity() {} + + public PositionEntity(String name) { + setName(name); + } + + @Id + @GeneratedValue(strategy=GenerationType.AUTO) + public Long getId() { return id; } + + @SuppressWarnings("unused") + private void setId(Long id) { this.id = id; } + + @Column + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @Column + public String getShortName() { + return shortName; + } + + public void setShortName(String shortName) { + this.shortName = shortName; + } + + @ManyToOne + public SportEntity getSport() { + return sport; + } + + public void setSport(SportEntity sport) { + this.sport = sport; + } +} diff --git a/java/src/main/java/com/ibtp/kontor/tradingcards/entity/SportCardEntity.java b/java/src/main/java/com/ibtp/kontor/tradingcards/entity/SportCardEntity.java new file mode 100644 index 0000000..f71f722 --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/tradingcards/entity/SportCardEntity.java @@ -0,0 +1,68 @@ +package com.ibtp.kontor.tradingcards.entity; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.ManyToOne; +import javax.persistence.NamedQueries; +import javax.persistence.NamedQuery; +import javax.persistence.Table; + +@NamedQueries({ + @NamedQuery(name="SportCard.findAll", query="SELECT s from SportCardEntity as s") +}) + +@Entity +@Table(name = "SPORTCARD") +public class SportCardEntity { + private Long id; + private PlayerEntity player; + private BaseSetEntity baseSet; + private ParallelSetEntity parallelSet; + private InsertEntity insert; + + @Id + @GeneratedValue(strategy=GenerationType.AUTO) + public Long getId() { return id; } + + @SuppressWarnings("unused") + private void setId(Long id) { this.id = id; } + + @ManyToOne + public PlayerEntity getPlayer() { + return player; + } + + public void setPlayer(PlayerEntity player) { + this.player = player; + } + + @ManyToOne + public BaseSetEntity getBaseSet() { + return baseSet; + } + + public void setBaseSet(BaseSetEntity baseSet) { + this.baseSet = baseSet; + } + + @ManyToOne + public ParallelSetEntity getParallelSet() { + return parallelSet; + } + + public void setParallelSet(ParallelSetEntity parallelSet) { + this.parallelSet = parallelSet; + } + + @ManyToOne + public InsertEntity getInsert() { + return insert; + } + + public void setInsert(InsertEntity insert) { + this.insert = insert; + } + +} diff --git a/java/src/main/java/com/ibtp/kontor/tradingcards/entity/SportEntity.java b/java/src/main/java/com/ibtp/kontor/tradingcards/entity/SportEntity.java new file mode 100644 index 0000000..8e2258e --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/tradingcards/entity/SportEntity.java @@ -0,0 +1,75 @@ +package com.ibtp.kontor.tradingcards.entity; + +import java.util.ArrayList; +import java.util.Collection; + +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.NamedQueries; +import javax.persistence.NamedQuery; +import javax.persistence.OneToMany; +import javax.persistence.Table; + +@NamedQueries({ + @NamedQuery(name="Sport.findAll", query="SELECT s from SportEntity as s"), + @NamedQuery(name="Sport.findByName", query="SELECT s from SportEntity as s WHERE s.name = :name") +}) + +@Entity +@Table(name="SPORT") +public class SportEntity { + + private Long id; + private String name; + private Collection teams = new ArrayList(); + private Collection positions = new ArrayList(); + + public SportEntity() {} + + public SportEntity(String name) { + setName(name); + } + + @Id + @GeneratedValue(strategy=GenerationType.AUTO) + Long getId() { return id; } + + @SuppressWarnings("unused") + private void setId(Long id) { this.id = id; } + + @Column + String getName() { + return name; + } + + void setName(String name) { + this.name = name; + } + + @OneToMany(mappedBy="sport", cascade=CascadeType.REMOVE) + public Collection getTeams() { + return teams; + } + + public void setTeams(Collection teams) { + this.teams = teams; + } + + @OneToMany(mappedBy="sport", cascade=CascadeType.REMOVE) + public Collection getPositions() { + return positions; + } + + public void setPositions(Collection positions) { + this.positions = positions; + } + + @Override + public String toString() { + return "Sport[" + "id=" + getId() + ",name=" + getName() + "]"; + } +} diff --git a/java/src/main/java/com/ibtp/kontor/tradingcards/entity/TeamEntity.java b/java/src/main/java/com/ibtp/kontor/tradingcards/entity/TeamEntity.java new file mode 100644 index 0000000..8dbcb77 --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/tradingcards/entity/TeamEntity.java @@ -0,0 +1,48 @@ +package com.ibtp.kontor.tradingcards.entity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.ManyToOne; +import javax.persistence.NamedQueries; +import javax.persistence.NamedQuery; +import javax.persistence.Table; + +@NamedQueries({ + @NamedQuery(name="Team.findAll", query="SELECT t from TeamEntity as t"), + @NamedQuery(name="Team.findByName", query="SELECT t from TeamEntity as t WHERE t.name = :name") +}) + +@Entity +@Table(name="TEAM") +public class TeamEntity { + + private Long id; + private String name; + private SportEntity sport; + + public TeamEntity() {} + + public TeamEntity(String name) { + setName(name); + } + + @Id + @GeneratedValue(strategy=GenerationType.AUTO) + public Long getId() { return id; } + + @SuppressWarnings("unused") + private void setId(Long id) { this.id = id; } + + @Column + public String getName() { return name; } + + void setName(String name) { this.name = name; } + + @ManyToOne + public SportEntity getSport() { return sport; } + + public void setSport(SportEntity sport) { this.sport = sport; } +} diff --git a/java/src/main/java/com/ibtp/kontor/tradingcards/view/TradingCardsMenu.java b/java/src/main/java/com/ibtp/kontor/tradingcards/view/TradingCardsMenu.java new file mode 100644 index 0000000..f124056 --- /dev/null +++ b/java/src/main/java/com/ibtp/kontor/tradingcards/view/TradingCardsMenu.java @@ -0,0 +1,13 @@ +package com.ibtp.kontor.tradingcards.view; + +import javax.swing.*; + +/** + * Created by TPEETZ on 13.02.2015. + */ +public class TradingCardsMenu extends JMenu { + + public TradingCardsMenu() { + super("TradingCards"); + } +} diff --git a/java/src/main/resources/META-INF/persistence.xml b/java/src/main/resources/META-INF/persistence.xml new file mode 100644 index 0000000..35d671b --- /dev/null +++ b/java/src/main/resources/META-INF/persistence.xml @@ -0,0 +1,39 @@ + + + org.hibernate.jpa.HibernatePersistenceProvider + com.ibtp.kontor.comics.entity.ArtistEntity + com.ibtp.kontor.comics.entity.ComicEntity + com.ibtp.kontor.comics.entity.IssueEntity + com.ibtp.kontor.comics.entity.StoryArcEntity + com.ibtp.kontor.comics.entity.VolumeEntity + com.ibtp.kontor.comics.entity.PublisherEntity + com.ibtp.kontor.library.entity.AuthorEntity + com.ibtp.kontor.library.entity.ArticleEntity + com.ibtp.kontor.library.entity.BookEntity + com.ibtp.kontor.library.entity.FileEntity + com.ibtp.kontor.library.entity.TitleEntity + com.ibtp.kontor.tradingcards.entity.SportEntity + com.ibtp.kontor.tradingcards.entity.TeamEntity + com.ibtp.kontor.tradingcards.entity.PositionEntity + com.ibtp.kontor.tradingcards.entity.PlayerEntity + com.ibtp.kontor.tradingcards.entity.ManufacturerEntity + com.ibtp.kontor.tradingcards.entity.BaseSetEntity + com.ibtp.kontor.tradingcards.entity.InsertEntity + com.ibtp.kontor.tradingcards.entity.ParallelSetEntity + com.ibtp.kontor.tradingcards.entity.SportCardEntity + + + + + + + + + + + + + diff --git a/java/src/main/resources/logback.xml b/java/src/main/resources/logback.xml new file mode 100644 index 0000000..e8cff02 --- /dev/null +++ b/java/src/main/resources/logback.xml @@ -0,0 +1,40 @@ + + + + + + %d{yyyy-MM-dd_HH:mm:ss.SSS} %-5level %logger{36} - %msg%n + + + + + + c:/kontor.log + + %d{yyyy-MM-dd_HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + + + + c:/kontor.%i.log.zip + 1 + 10 + + + + 2MB + + + + + + + + + + + + + diff --git a/java/src/test/java/com/ibtp/kontor/comics/CollectionTest.java b/java/src/test/java/com/ibtp/kontor/comics/CollectionTest.java new file mode 100644 index 0000000..57d01a3 --- /dev/null +++ b/java/src/test/java/com/ibtp/kontor/comics/CollectionTest.java @@ -0,0 +1,43 @@ +package com.ibtp.kontor.comics; + +import com.ibtp.kontor.comics.dal.PublisherImpl; +import com.ibtp.kontor.comics.entity.PublisherEntity; +import com.ibtp.kontor.dal.DatabaseManager; +import com.ibtp.kontor.util.LocalTestDatabase; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.util.Collection; + +/** + * Created by TPEETZ on 27.01.2015. + */ +public class CollectionTest { + + @BeforeAll + public static void setUp() { + DatabaseManager.setDatabase(new LocalTestDatabase()); + } + + @AfterAll + public static void cleanup() { + PublisherImpl publisherImpl = new PublisherImpl(); + Collection publisherEntities = publisherImpl.findAll(); + for (PublisherEntity publisherEntity : publisherEntities) { + publisherImpl.delete(publisherEntity); + } + } + + @Test + public void testAddPublishers() { + String publisherName = "Bongo Comics"; + PublisherImpl publisherImpl = new PublisherImpl(); + publisherImpl.addPublisher(publisherName); + publisherImpl.addPublisher("Marvel"); + Collection publisherList = publisherImpl.findAll(); + assertEquals(2, publisherList.size()); + } +} diff --git a/java/src/test/java/com/ibtp/kontor/comics/dal/ArtistImplTest.java b/java/src/test/java/com/ibtp/kontor/comics/dal/ArtistImplTest.java new file mode 100644 index 0000000..e78e77f --- /dev/null +++ b/java/src/test/java/com/ibtp/kontor/comics/dal/ArtistImplTest.java @@ -0,0 +1,65 @@ +package com.ibtp.kontor.comics.dal; + +import com.ibtp.kontor.comics.entity.ArtistEntity; +import com.ibtp.kontor.dal.*; +import com.ibtp.kontor.util.LocalTestDatabase; + +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.util.Collection; + +public class ArtistImplTest { + + @BeforeAll + public static void setUp() { + DatabaseManager.setDatabase(new LocalTestDatabase()); + tearDown(); + } + + @AfterAll + public static void tearDown() { + ArtistImpl artistImpl = new ArtistImpl(); + Collection artistList = artistImpl.findAll(); + for (ArtistEntity artistEntity : artistList) { + artistImpl.delete(artistEntity); + } + } + + @Test + public void testArtistAddAndDelete() { + String artistName = "testArtistAddAndDelete"; + ArtistImpl artistImpl = new ArtistImpl(); + artistImpl.addArtist(artistName); + Collection resultList = artistImpl.findByName(artistName); + assertNotNull(resultList); + assertTrue(resultList.size() > 0); + ArtistEntity artist = (ArtistEntity)(resultList.toArray()[0]); + artistImpl.delete(artist); + resultList = artistImpl.findByName(artistName); + assertNotNull(resultList); + assertEquals(0, resultList.size()); + } + + @Test + public void testArtistFindAll() { + ArtistImpl artistImpl = new ArtistImpl(); + Collection artistList = artistImpl.findAll(); + assertNotNull(artistList); + assertEquals(0, artistList.size()); + artistImpl.addArtist("testArtistFindAll1"); + artistImpl.addArtist("testArtistFindAll2"); + artistImpl.addArtist("testArtistFindAll3"); + artistList = artistImpl.findAll(); + assertNotNull(artistList); + assertEquals(3, artistList.size()); + for (ArtistEntity artistEntity : artistList) { + artistImpl.delete(artistEntity); + } + } +} diff --git a/java/src/test/java/com/ibtp/kontor/comics/dal/ComicImplTest.java b/java/src/test/java/com/ibtp/kontor/comics/dal/ComicImplTest.java new file mode 100644 index 0000000..76f2d00 --- /dev/null +++ b/java/src/test/java/com/ibtp/kontor/comics/dal/ComicImplTest.java @@ -0,0 +1,57 @@ +package com.ibtp.kontor.comics.dal; + +import com.ibtp.kontor.comics.entity.ComicEntity; +import com.ibtp.kontor.dal.DatabaseManager; +import com.ibtp.kontor.util.LocalTestDatabase; + +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; + +import java.util.Collection; +import java.util.Iterator; + +/** + * Created by TPEETZ on 28.01.2015. + */ +public class ComicImplTest { + + @BeforeAll + public static void setUp() { + DatabaseManager.setDatabase(new LocalTestDatabase()); + } + + @Test + public void testComicAddAndDelete() { + String comicTitle = "Comic1"; + ComicImpl comicImpl = new ComicImpl(); + comicImpl.addComic(comicTitle); + Collection comicList = comicImpl.findByTitle(comicTitle); + assertNotNull(comicList); + assertEquals(1, comicList.size()); + comicImpl.delete((ComicEntity) comicList.toArray()[0]); + comicList = comicImpl.findByTitle(comicTitle); + assertNotNull(comicList); + assertEquals(0, comicList.size()); + } + + @Test + public void testComicFindAll() { + ComicImpl comicImpl = new ComicImpl(); + comicImpl.addComic("Comic1"); + comicImpl.addComic("Comic2"); + comicImpl.addComic("Comic3"); + Collection comicList = comicImpl.findAll(); + assertNotNull(comicList); + assertEquals(3, comicList.size()); + for (Iterator iterator = comicList.iterator(); iterator.hasNext(); ) { + ComicEntity next = iterator.next(); + comicImpl.delete(next); + } + comicList = comicImpl.findAll(); + assertNotNull(comicList); + assertEquals(0, comicList.size()); + } +} diff --git a/java/src/test/java/com/ibtp/kontor/comics/dal/IssueImplTest.java b/java/src/test/java/com/ibtp/kontor/comics/dal/IssueImplTest.java new file mode 100644 index 0000000..5797305 --- /dev/null +++ b/java/src/test/java/com/ibtp/kontor/comics/dal/IssueImplTest.java @@ -0,0 +1,64 @@ +package com.ibtp.kontor.comics.dal; + +import com.ibtp.kontor.comics.entity.IssueEntity; +import com.ibtp.kontor.dal.DatabaseManager; +import com.ibtp.kontor.util.LocalTestDatabase; + +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; + +import java.util.Collection; +import java.util.Iterator; + +/** + * Created by TPEETZ on 28.01.2015. + */ +public class IssueImplTest { + + @BeforeAll + public static void setUp() { + DatabaseManager.setDatabase(new LocalTestDatabase()); + } + + @Test + public void testIssueAddAndDelete() { + String issueNumber = "42"; + IssueImpl issueImpl = new IssueImpl(); + IssueEntity issue = new IssueEntity(); + issue.setNumber(issueNumber); + issueImpl.store(issue); + Collection issueList = issueImpl.findByNumber(issueNumber); + assertNotNull(issueList); + assertEquals(1, issueList.size()); + issueImpl.delete(issue); + issueList = issueImpl.findByNumber(issueNumber); + assertNotNull(issueList); + assertEquals(0, issueList.size()); + } + + @Test + public void testIssueFindAll() { + IssueImpl issueImpl = new IssueImpl(); + IssueEntity issue1 = new IssueEntity(); + issue1.setNumber("issue1"); + IssueEntity issue2 = new IssueEntity(); + issue1.setNumber("issue2"); + IssueEntity issue3 = new IssueEntity(); + issue1.setNumber("issue3"); + issueImpl.store(issue1); + issueImpl.store(issue2); + issueImpl.store(issue3); + Collection issueList = issueImpl.findAll(); + assertNotNull(issueList); + assertEquals(3, issueList.size()); + for (IssueEntity issueEntity : issueList) { + issueImpl.delete(issueEntity); + } + issueList = issueImpl.findAll(); + assertNotNull(issueList); + assertEquals(0, issueList.size()); + } +} diff --git a/java/src/test/java/com/ibtp/kontor/comics/dal/PublisherImplTest.java b/java/src/test/java/com/ibtp/kontor/comics/dal/PublisherImplTest.java new file mode 100644 index 0000000..b795e96 --- /dev/null +++ b/java/src/test/java/com/ibtp/kontor/comics/dal/PublisherImplTest.java @@ -0,0 +1,56 @@ +package com.ibtp.kontor.comics.dal; + +import com.ibtp.kontor.comics.entity.PublisherEntity; +import com.ibtp.kontor.dal.DatabaseManager; +import com.ibtp.kontor.util.LocalTestDatabase; + +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.util.Collection; +import java.util.Iterator; + +/** + * Created by TPEETZ on 20.01.2015. + */ +public class PublisherImplTest { + + @BeforeAll + public static void setUp() { + DatabaseManager.setDatabase(new LocalTestDatabase()); + } + + @AfterEach + public void cleanUp() { + PublisherImpl publisherImpl = new PublisherImpl(); + Collection publisherList = publisherImpl.findAll(); + for (PublisherEntity publisherEntity : publisherList) { + publisherImpl.delete(publisherEntity); + } + } + + @Test + public void testPublisherAddAndDelete() { + String publisherName = "testPublisherAddAndDelete"; + PublisherImpl publisherImpl = new PublisherImpl(); + PublisherEntity publisher = publisherImpl.addPublisher(publisherName); + Collection publisherList = publisherImpl.findByName(publisherName); + assertEquals(1, publisherList.size()); + publisherImpl.delete(publisher); + publisherList = publisherImpl.findByName(publisherName); + assertEquals(0, publisherList.size()); + } + + @Test + public void testPublisherFindAll() { + PublisherImpl publisherImpl = new PublisherImpl(); + publisherImpl.addPublisher("testDeletePublisher1"); + publisherImpl.addPublisher("testDeletePublisher2"); + publisherImpl.addPublisher("testDeletePublisher3"); + Collection publisherList = publisherImpl.findAll(); + assertEquals(3, publisherList.size()); + } +} diff --git a/java/src/test/java/com/ibtp/kontor/comics/dal/StoryArcImplTest.java b/java/src/test/java/com/ibtp/kontor/comics/dal/StoryArcImplTest.java new file mode 100644 index 0000000..2768e32 --- /dev/null +++ b/java/src/test/java/com/ibtp/kontor/comics/dal/StoryArcImplTest.java @@ -0,0 +1,63 @@ +package com.ibtp.kontor.comics.dal; + +import com.ibtp.kontor.comics.entity.StoryArcEntity; +import com.ibtp.kontor.dal.DatabaseManager; +import com.ibtp.kontor.util.LocalTestDatabase; + +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; + +import java.util.Collection; + +/** + * Created by TPEETZ on 28.01.2015. + */ +public class StoryArcImplTest { + + @BeforeAll + public static void setUp() { + DatabaseManager.setDatabase(new LocalTestDatabase()); + StoryArcImpl storyArcImpl = new StoryArcImpl(); + Collection storyArcEntityCollection = storyArcImpl.findAll(); + for (StoryArcEntity storyArcEntity : storyArcEntityCollection) { + storyArcImpl.delete(storyArcEntity); + } + } + + @Test + public void testStoryArcAddAndDelete() { + String storyArcTtitle = "testStoryArcAddAndDelete"; + StoryArcImpl storyArcImpl = new StoryArcImpl(); + StoryArcEntity storyArc = new StoryArcEntity(); + storyArc.setTitle(storyArcTtitle); + storyArcImpl.store(storyArc); + Collection storyArcEntityCollection = storyArcImpl.findByTitle(storyArcTtitle); + assertNotNull(storyArcEntityCollection); + assertEquals(1, storyArcEntityCollection.size()); + storyArcImpl.delete(storyArc); + storyArcEntityCollection = storyArcImpl.findByTitle(storyArcTtitle); + assertNotNull(storyArcEntityCollection); + assertEquals(0, storyArcEntityCollection.size()); + } + + @Test + public void testStoryArcFindAll() { + StoryArcImpl storyArcImpl = new StoryArcImpl(); + StoryArcEntity storyArc; + storyArc = new StoryArcEntity(); + storyArc.setTitle("testStoryArcFindAll1"); + storyArcImpl.store(storyArc); + storyArc = new StoryArcEntity(); + storyArc.setTitle("testStoryArcFindAll2"); + storyArcImpl.store(storyArc); + storyArc = new StoryArcEntity(); + storyArc.setTitle("testStoryArcFindAll3"); + storyArcImpl.store(storyArc); + Collection storyArcEntityCollection = storyArcImpl.findAll(); + assertNotNull(storyArcEntityCollection); + assertEquals(3, storyArcEntityCollection.size()); + } +} diff --git a/java/src/test/java/com/ibtp/kontor/comics/dal/VolumeImplTest.java b/java/src/test/java/com/ibtp/kontor/comics/dal/VolumeImplTest.java new file mode 100644 index 0000000..fd34aa4 --- /dev/null +++ b/java/src/test/java/com/ibtp/kontor/comics/dal/VolumeImplTest.java @@ -0,0 +1,72 @@ +package com.ibtp.kontor.comics.dal; + +import com.ibtp.kontor.comics.entity.VolumeEntity; +import com.ibtp.kontor.dal.DatabaseManager; +import com.ibtp.kontor.util.LocalTestDatabase; + +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; + +import java.util.Collection; +import java.util.Iterator; + +/** + * Created by TPEETZ on 28.01.2015. + */ +public class VolumeImplTest { + + @BeforeAll + public static void setUp() { + DatabaseManager.setDatabase(new LocalTestDatabase()); + } + + @AfterEach + public void cleanUp() { + VolumeImpl volumeImpl = new VolumeImpl(); + Collection volumeList = volumeImpl.findAll(); + for (VolumeEntity volumeEntity : volumeList) { + volumeImpl.delete(volumeEntity); + } + } + + @Test + public void testVolumeAddAndDelete() { + String volumeTitle = "testVolumeAddAndDelete"; + VolumeImpl volumeImpl = new VolumeImpl(); + VolumeEntity volume = new VolumeEntity(); + volume.setTitle(volumeTitle); + VolumeEntity volumeEntity = volumeImpl.store(volume); + assertNotNull(volumeEntity); + assertEquals(volumeTitle, volumeEntity.getTitle()); + Collection volumeList = volumeImpl.findByTitle(volumeTitle); + assertNotNull(volumeList); + assertEquals(1, volumeList.size()); + VolumeEntity result = (VolumeEntity)volumeList.toArray()[0]; + assertEquals(volume, result); + volumeImpl.delete(result); + volumeList = volumeImpl.findByTitle(volumeTitle); + assertEquals(0, volumeList.size()); + } + + @Test + public void testVolumeFindAll() { + VolumeImpl volumeImpl = new VolumeImpl(); + VolumeEntity volume; + volume = new VolumeEntity(); + volume.setTitle("testVolumeFindAll1"); + volumeImpl.store(volume); + volume = new VolumeEntity(); + volume.setTitle("testVolumeFindAll2"); + volumeImpl.store(volume); + volume = new VolumeEntity(); + volume.setTitle("testVolumeFindAll3"); + volumeImpl.store(volume); + Collection volumeList = volumeImpl.findAll(); + assertNotNull(volumeList); + assertEquals(3, volumeList.size()); + } +} diff --git a/java/src/test/java/com/ibtp/kontor/dal/DataAccessLayerTest.java b/java/src/test/java/com/ibtp/kontor/dal/DataAccessLayerTest.java new file mode 100644 index 0000000..a9737ac --- /dev/null +++ b/java/src/test/java/com/ibtp/kontor/dal/DataAccessLayerTest.java @@ -0,0 +1,63 @@ +package com.ibtp.kontor.dal; + +import static org.junit.jupiter.api.Assertions.fail; + +import java.lang.reflect.Method; + +import org.junit.jupiter.api.Test; + +/** + * Created by TPEETZ on 10.02.2015. + */ +public class DataAccessLayerTest { + + public void findTests(String packageName, String entityName) { + String testClassName = packageName + entityName + "ImplTest"; + Class testClass; + try { + testClass = Class.forName(testClassName); + Method addAndDelete = testClass.getMethod("test" + entityName + "AddAndDelete"); + Method findAll = testClass.getMethod("test" + entityName + "FindAll"); + } catch (ClassNotFoundException e) { + fail("Class " + testClassName + " missing"); + } catch (NoSuchMethodException e) { + fail("Test method for class " + testClassName + " missing"); + } + } + + @Test + public void testFindComicTests() { + /* + * Find all Tests + */ + String[] testClasses = new String[]{"Artist", "Comic", "Issue", "Publisher", "StoryArc", "Volume"}; + for (int i = 0; i < testClasses.length; i++) { + String testEntity = testClasses[i]; + findTests("com.ibtp.kontor.comics.dal.", testEntity); + } + } + + @Test + public void testFindLibraryTests() { + /* + * Find all Tests + */ + String[] testClasses = new String[]{"Article", "Author", "Book", "File", "Title"}; + for (int i = 0; i < testClasses.length; i++) { + String testEntity = testClasses[i]; + findTests("com.ibtp.kontor.library.dal.", testEntity); + } + } + + @Test + public void testFindTradingCardsTests() { + /* + * Find all Tests + */ + String[] testClasses = new String[]{"BaseSet", "Insert", "Manufacturer", "ParallelSet", "Player", "Position", "SportCard", "Sport", "Team"}; + for (int i = 0; i < testClasses.length; i++) { + String testEntity = testClasses[i]; + findTests("com.ibtp.kontor.tradingcards.dal." , testEntity); + } + } +} diff --git a/java/src/test/java/com/ibtp/kontor/library/BookshelfTest.java b/java/src/test/java/com/ibtp/kontor/library/BookshelfTest.java new file mode 100644 index 0000000..f6609fb --- /dev/null +++ b/java/src/test/java/com/ibtp/kontor/library/BookshelfTest.java @@ -0,0 +1,23 @@ +package com.ibtp.kontor.library; + +import com.ibtp.kontor.dal.DatabaseManager; +import com.ibtp.kontor.util.LocalTestDatabase; + +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; + +/** + * Created by TPEETZ on 27.01.2015. + */ +public class BookshelfTest { + + @BeforeAll + public static void setUp() { + DatabaseManager.setDatabase(new LocalTestDatabase()); + } + + @Test + public void testAddAuthors() { + + } +} diff --git a/java/src/test/java/com/ibtp/kontor/library/dal/ArticleImplTest.java b/java/src/test/java/com/ibtp/kontor/library/dal/ArticleImplTest.java new file mode 100644 index 0000000..3fc8772 --- /dev/null +++ b/java/src/test/java/com/ibtp/kontor/library/dal/ArticleImplTest.java @@ -0,0 +1,57 @@ +package com.ibtp.kontor.library.dal; + +import com.ibtp.kontor.dal.DatabaseManager; +import com.ibtp.kontor.util.LocalTestDatabase; + +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; + +import com.ibtp.kontor.library.entity.ArticleEntity; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; + +import java.util.Collection; +import java.util.List; + +/** + * Created by tpeetz on 23.01.2015. + */ +public class ArticleImplTest { + + @BeforeAll + public static void setUp() { + DatabaseManager.setDatabase(new LocalTestDatabase()); + cleanUp(); + } + + @AfterAll + public static void cleanUp() { + ArticleImpl articleImpl = new ArticleImpl(); + Collection articleList = articleImpl.findAll(); + for (ArticleEntity articleEntity : articleList) { + articleImpl.delete(articleEntity); + } + } + + @Test + public void testAddArticle() { + String articleTitle = "testAddArticle"; + ArticleImpl articleImpl = new ArticleImpl(); + ArticleEntity article = articleImpl.addArticle(articleTitle); + assertNotNull(article); + List articleList = articleImpl.findByTitle(articleTitle); + assertEquals(1, articleList.size()); + } + + @Test + public void testArticleAddAndDelete() { + + } + + @Test + public void testArticleFindAll() { + + } +} diff --git a/java/src/test/java/com/ibtp/kontor/library/dal/AuthorImplTest.java b/java/src/test/java/com/ibtp/kontor/library/dal/AuthorImplTest.java new file mode 100644 index 0000000..cec2048 --- /dev/null +++ b/java/src/test/java/com/ibtp/kontor/library/dal/AuthorImplTest.java @@ -0,0 +1,56 @@ +package com.ibtp.kontor.library.dal; + +import com.ibtp.kontor.dal.DatabaseManager; +import com.ibtp.kontor.util.LocalTestDatabase; + +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; + +import com.ibtp.kontor.library.entity.AuthorEntity; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; + +import java.util.List; + +/** + * Created by thomas on 23.01.15. + */ +public class AuthorImplTest { + + @BeforeAll + public static void setUp() { + DatabaseManager.setDatabase(new LocalTestDatabase()); + } + + @Test + public void testAddAuthor() { + String authorName = "testAddAuthor"; + AuthorImpl authorImpl = new AuthorImpl(); + AuthorEntity author = authorImpl.addAuthor(authorName); + assertNotNull(author); + } + + @Test + public void testDeleteAuthor() { + String authorName = "testDeleteAuthor"; + AuthorImpl authorImpl = new AuthorImpl(); + AuthorEntity author = authorImpl.addAuthor(authorName); + assertNotNull(author); + List authorList = authorImpl.findByName(authorName); + assertEquals(1, authorList.size()); + authorImpl.delete(author); + authorList = authorImpl.findByName(authorName); + assertEquals(0, authorList.size()); + } + + @Test + public void testAuthorAddAndDelete() { + + } + + @Test + public void testAuthorFindAll() { + + } +} diff --git a/java/src/test/java/com/ibtp/kontor/library/dal/BookImplTest.java b/java/src/test/java/com/ibtp/kontor/library/dal/BookImplTest.java new file mode 100644 index 0000000..95080e8 --- /dev/null +++ b/java/src/test/java/com/ibtp/kontor/library/dal/BookImplTest.java @@ -0,0 +1,28 @@ +package com.ibtp.kontor.library.dal; + +import com.ibtp.kontor.dal.DatabaseManager; +import com.ibtp.kontor.util.LocalTestDatabase; + +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; + +/** + * Created by TPEETZ on 27.01.2015. + */ +public class BookImplTest { + + @BeforeAll + public static void setUp() { + DatabaseManager.setDatabase(new LocalTestDatabase()); + } + + @Test + public void testBookAddAndDelete() { + + } + + @Test + public void testBookFindAll() { + + } +} diff --git a/java/src/test/java/com/ibtp/kontor/library/dal/FileImplTest.java b/java/src/test/java/com/ibtp/kontor/library/dal/FileImplTest.java new file mode 100644 index 0000000..dd0c690 --- /dev/null +++ b/java/src/test/java/com/ibtp/kontor/library/dal/FileImplTest.java @@ -0,0 +1,28 @@ +package com.ibtp.kontor.library.dal; + +import com.ibtp.kontor.dal.DatabaseManager; +import com.ibtp.kontor.util.LocalTestDatabase; + +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; + +/** + * Created by TPEETZ on 27.01.2015. + */ +public class FileImplTest { + + @BeforeAll + public static void setUp() { + DatabaseManager.setDatabase(new LocalTestDatabase()); + } + + @Test + public void testFileAddAndDelete() { + + } + + @Test + public void testFileFindAll() { + + } +} diff --git a/java/src/test/java/com/ibtp/kontor/library/dal/TitleImplTest.java b/java/src/test/java/com/ibtp/kontor/library/dal/TitleImplTest.java new file mode 100644 index 0000000..92acd55 --- /dev/null +++ b/java/src/test/java/com/ibtp/kontor/library/dal/TitleImplTest.java @@ -0,0 +1,28 @@ +package com.ibtp.kontor.library.dal; + +import com.ibtp.kontor.dal.DatabaseManager; +import com.ibtp.kontor.util.LocalTestDatabase; + +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; + +/** + * Created by TPEETZ on 27.01.2015. + */ +public class TitleImplTest { + + @BeforeAll + public static void setUp() { + DatabaseManager.setDatabase(new LocalTestDatabase()); + } + + @Test + public void testTitleAddAndDelete() { + + } + + @Test + public void testTitleFindAll() { + + } +} diff --git a/java/src/test/java/com/ibtp/kontor/tradingcards/CollectionTest.java b/java/src/test/java/com/ibtp/kontor/tradingcards/CollectionTest.java new file mode 100644 index 0000000..69e28ad --- /dev/null +++ b/java/src/test/java/com/ibtp/kontor/tradingcards/CollectionTest.java @@ -0,0 +1,168 @@ +package com.ibtp.kontor.tradingcards; + +import com.ibtp.kontor.dal.DatabaseManager; +import com.ibtp.kontor.tradingcards.dal.TeamImpl; +import com.ibtp.kontor.tradingcards.entity.TeamEntity; +import com.ibtp.kontor.util.LocalTestDatabase; + +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; + +import com.ibtp.kontor.tradingcards.dal.SportImpl; +import com.ibtp.kontor.tradingcards.entity.SportEntity; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.util.Collection; +import java.util.Iterator; + +/** + * Created by TPEETZ on 27.01.2015. + */ +public class CollectionTest { + + @BeforeAll + public static void setUp() { + DatabaseManager.setDatabase(new LocalTestDatabase()); + setupSports(); + } + + public static void setupSports() { + SportImpl sportImpl = new SportImpl(); + SportEntity football = sportImpl.addSport("Football"); + setupFootballTeams(football); + SportEntity baseball = sportImpl.addSport("Baseball"); + setupFootballTeams(baseball); + SportEntity basketball = sportImpl.addSport("Basketball"); + setupBasketballTeams(basketball); + SportEntity hockey = sportImpl.addSport("Hockey"); + setupHockeyTeams(hockey); + } + + public static void setupFootballTeams(SportEntity football) { + TeamImpl teamImpl = new TeamImpl(); + teamImpl.addTeam("Dallas Cowboys", football); + teamImpl.addTeam("New York Giants", football); + teamImpl.addTeam("Philadelphia Eagles", football); + teamImpl.addTeam("Arizona Cardinals", football); + teamImpl.addTeam("Washington Redskins", football); + teamImpl.addTeam("Detroit Lions", football); + teamImpl.addTeam("Minnesota Vikings", football); + teamImpl.addTeam("Green Bay Packers", football); + teamImpl.addTeam("Chicago Bears", football); + teamImpl.addTeam("Tampa Bay Buccaneers", football); + teamImpl.addTeam("San Francisco 49ers", football); + teamImpl.addTeam("New Orleans Saints", football); + teamImpl.addTeam("Atlanta Falcons", football); + teamImpl.addTeam("Los Angeles Rams", football); + teamImpl.addTeam("Buffalo Bills", football); + teamImpl.addTeam("Miami Dolphins", football); + teamImpl.addTeam("New York Jets", football); + teamImpl.addTeam("New England Patriots", football); + teamImpl.addTeam("Indianapolis Colts", football); + teamImpl.addTeam("Houston Oilers", football); + teamImpl.addTeam("Pittsburgh Steelers", football); + teamImpl.addTeam("Cleveland Browns", football); + teamImpl.addTeam("Kansas City Chiefs", football); + teamImpl.addTeam("Los Angeles Raiders", football); + teamImpl.addTeam("Denver Broncos", football); + teamImpl.addTeam("San Diego Chargers", football); + teamImpl.addTeam("Seattle Seahawks", football); + teamImpl.addTeam("Jacksonville Jaguars", football); + teamImpl.addTeam("Houston Texans", football); + } + + public static void setupBaseballTeams(SportEntity baseball) { + TeamImpl teamImpl = new TeamImpl(); + } + + public static void setupBasketballTeams(SportEntity basketball) { + TeamImpl teamImpl = new TeamImpl(); + teamImpl.addTeam("Houston Rockets", basketball); + teamImpl.addTeam("San Antonio Spurs", basketball); + teamImpl.addTeam("Utah Jazz", basketball); + teamImpl.addTeam("Denver Nuggets", basketball); + teamImpl.addTeam("Minnesota Timberwolves", basketball); + teamImpl.addTeam("Dallas Mavericks", basketball); + teamImpl.addTeam("Seattle SuperSonics", basketball); + teamImpl.addTeam("Phoenix Suns", basketball); + teamImpl.addTeam("Golden State Warriors", basketball); + teamImpl.addTeam("Portland Trail Blazers", basketball); + teamImpl.addTeam("Los Angeles Lakers", basketball); + teamImpl.addTeam("Sacramento Kings", basketball); + teamImpl.addTeam("Los Angeles Clippers", basketball); + teamImpl.addTeam("New York Knicks", basketball); + teamImpl.addTeam("Orlando Magic", basketball); + teamImpl.addTeam("New Jersey Nets", basketball); + teamImpl.addTeam("Miami Heat", basketball); + teamImpl.addTeam("Boston Celtics", basketball); + teamImpl.addTeam("Philadelphia 76ers", basketball); + teamImpl.addTeam("Washington Bullets", basketball); + teamImpl.addTeam("Atlanta Hawks", basketball); + teamImpl.addTeam("Chicago Bulls", basketball); + teamImpl.addTeam("Indiana Pacers", basketball); + teamImpl.addTeam("Cleveland Cavaliers", basketball); + teamImpl.addTeam("Charlotte Hornets", basketball); + teamImpl.addTeam("Detroit Pistons", basketball); + teamImpl.addTeam("Milwaukee Bucks", basketball); + } + + public static void setupHockeyTeams(SportEntity hockey) { + TeamImpl teamImpl = new TeamImpl(); + teamImpl.addTeam("New York Rangers", hockey); + teamImpl.addTeam("Buffalo Sabers", hockey); + teamImpl.addTeam("Detroit Red Wings", hockey); + teamImpl.addTeam("Vancouver Canucks", hockey); + teamImpl.addTeam("Mighty Ducks of Anaheim", hockey); + teamImpl.addTeam("Calgary Flames", hockey); + teamImpl.addTeam("Edmonton Oilers", hockey); + teamImpl.addTeam("Los Angeles Kings", hockey); + teamImpl.addTeam("San Jose Sharks", hockey); + teamImpl.addTeam("Chicago Blackhawks", hockey); + teamImpl.addTeam("Dallas Stars", hockey); + teamImpl.addTeam("St. Louis Blues", hockey); + teamImpl.addTeam("Toronto Maple Leafs", hockey); + teamImpl.addTeam("Winnipeg Jets", hockey); + teamImpl.addTeam("Boston Bruins", hockey); + teamImpl.addTeam("Hartford Whalers", hockey); + teamImpl.addTeam("Montreal Canadiers", hockey); + teamImpl.addTeam("Ottawa Senators", hockey); + teamImpl.addTeam("Pittsburgh Penguins", hockey); + teamImpl.addTeam("Quebec Nordiques", hockey); + teamImpl.addTeam("Florida Panthers", hockey); + teamImpl.addTeam("New Jersey Devils", hockey); + teamImpl.addTeam("New York Islanders", hockey); + teamImpl.addTeam("Philadelphia Flyers", hockey); + teamImpl.addTeam("Tamba Bay Lightning", hockey); + teamImpl.addTeam("Washington Capitals", hockey); + } + + @AfterAll + public static void tearDown() { + TeamImpl teamImpl = new TeamImpl(); + Collection teamEntities = teamImpl.findAll(); + for (TeamEntity teamEntity : teamEntities) { + teamImpl.delete(teamEntity); + } + SportImpl sportImpl = new SportImpl(); + Collection sportEntities = sportImpl.findAll(); + for (SportEntity sportEntity : sportEntities) { + sportImpl.delete(sportEntity); + } + } + + @Test + public void gettAllSports() { + SportImpl sportImpl = new SportImpl(); + Collection resultList = sportImpl.findAll(); + assertEquals(4, resultList.size()); + } + + @Test + public void getAllTeams() { + TeamImpl teamImpl = new TeamImpl(); + Collection resultList = teamImpl.findAll(); + assertEquals(111, resultList.size()); + } +} diff --git a/java/src/test/java/com/ibtp/kontor/tradingcards/dal/BaseSetImplTest.java b/java/src/test/java/com/ibtp/kontor/tradingcards/dal/BaseSetImplTest.java new file mode 100644 index 0000000..9f3bb4c --- /dev/null +++ b/java/src/test/java/com/ibtp/kontor/tradingcards/dal/BaseSetImplTest.java @@ -0,0 +1,28 @@ +package com.ibtp.kontor.tradingcards.dal; + +import com.ibtp.kontor.dal.DatabaseManager; +import com.ibtp.kontor.util.LocalTestDatabase; + +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; + +/** + * Created by tpeetz on 27.01.2015. + */ +public class BaseSetImplTest { + + @BeforeAll + public static void setUp() { + DatabaseManager.setDatabase(new LocalTestDatabase()); + } + + @Test + public void testBaseSetAddAndDelete() { + + } + + @Test + public void testBaseSetFindAll() { + + } +} diff --git a/java/src/test/java/com/ibtp/kontor/tradingcards/dal/InsertImplTest.java b/java/src/test/java/com/ibtp/kontor/tradingcards/dal/InsertImplTest.java new file mode 100644 index 0000000..c246743 --- /dev/null +++ b/java/src/test/java/com/ibtp/kontor/tradingcards/dal/InsertImplTest.java @@ -0,0 +1,29 @@ +package com.ibtp.kontor.tradingcards.dal; + +import com.ibtp.kontor.dal.DatabaseManager; +import com.ibtp.kontor.util.LocalTestDatabase; + +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; + +/** + * Created by tpeetz on 27.01.2015. + */ +public class InsertImplTest { + + @BeforeAll + public static void setUp() { + DatabaseManager.setDatabase(new LocalTestDatabase()); + } + + + @Test + public void testInsertAddAndDelete() { + + } + + @Test + public void testInsertFindAll() { + + } +} diff --git a/java/src/test/java/com/ibtp/kontor/tradingcards/dal/ManufacturerImplTest.java b/java/src/test/java/com/ibtp/kontor/tradingcards/dal/ManufacturerImplTest.java new file mode 100644 index 0000000..3681a3f --- /dev/null +++ b/java/src/test/java/com/ibtp/kontor/tradingcards/dal/ManufacturerImplTest.java @@ -0,0 +1,57 @@ +package com.ibtp.kontor.tradingcards.dal; + +import com.ibtp.kontor.dal.DatabaseManager; +import com.ibtp.kontor.util.LocalTestDatabase; + +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; + +import com.ibtp.kontor.tradingcards.entity.ManufacturerEntity; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.util.List; + +/** + * Created by tpeetz on 20.01.2015. + */ +public class ManufacturerImplTest { + + @BeforeAll + public static void setup() { + DatabaseManager.setDatabase(new LocalTestDatabase()); + } + + @Test + public void addManufacturer() { + String manufacturerName = "Manufacturer1"; + ManufacturerImpl manufacturerImpl = new ManufacturerImpl(); + ManufacturerEntity manufacturer = manufacturerImpl.addManufacturer(manufacturerName); + assertNotNull(manufacturer); + List manufacturerList = manufacturerImpl.findByName(manufacturerName); + assertTrue(manufacturerList.size() > 0); + } + + @Test + public void deleteManufacturer() { + String manufacturerName = "Manufacturer1"; + ManufacturerImpl manufacturerImpl = new ManufacturerImpl(); + List manufacturerList = manufacturerImpl.findByName(manufacturerName); + assertTrue(manufacturerList.size() > 0); + manufacturerImpl.delete(manufacturerList.get(0)); + manufacturerList = manufacturerImpl.findByName(manufacturerName); + assertEquals(0, manufacturerList.size()); + } + + @Test + public void testManufacturerAddAndDelete() { + + } + + @Test + public void testManufacturerFindAll() { + + } +} diff --git a/java/src/test/java/com/ibtp/kontor/tradingcards/dal/ParallelSetImplTest.java b/java/src/test/java/com/ibtp/kontor/tradingcards/dal/ParallelSetImplTest.java new file mode 100644 index 0000000..b674dd1 --- /dev/null +++ b/java/src/test/java/com/ibtp/kontor/tradingcards/dal/ParallelSetImplTest.java @@ -0,0 +1,28 @@ +package com.ibtp.kontor.tradingcards.dal; + +import com.ibtp.kontor.dal.DatabaseManager; +import com.ibtp.kontor.util.LocalTestDatabase; + +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; + +/** + * Created by tpeetz on 27.01.2015. + */ +public class ParallelSetImplTest { + + @BeforeAll + public static void setUp() { + DatabaseManager.setDatabase(new LocalTestDatabase()); + } + + @Test + public void testParallelSetAddAndDelete() { + + } + + @Test + public void testParallelSetFindAll() { + + } +} diff --git a/java/src/test/java/com/ibtp/kontor/tradingcards/dal/PlayerImplTest.java b/java/src/test/java/com/ibtp/kontor/tradingcards/dal/PlayerImplTest.java new file mode 100644 index 0000000..bee6239 --- /dev/null +++ b/java/src/test/java/com/ibtp/kontor/tradingcards/dal/PlayerImplTest.java @@ -0,0 +1,28 @@ +package com.ibtp.kontor.tradingcards.dal; + +import com.ibtp.kontor.dal.DatabaseManager; +import com.ibtp.kontor.util.LocalTestDatabase; + +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; + +/** + * Created by tpeetz on 27.01.2015. + */ +public class PlayerImplTest { + + @BeforeAll + public static void setUp() { + DatabaseManager.setDatabase(new LocalTestDatabase()); + } + + @Test + public void testPlayerAddAndDelete() { + + } + + @Test + public void testPlayerFindAll() { + + } +} diff --git a/java/src/test/java/com/ibtp/kontor/tradingcards/dal/PositionImplTest.java b/java/src/test/java/com/ibtp/kontor/tradingcards/dal/PositionImplTest.java new file mode 100644 index 0000000..9271707 --- /dev/null +++ b/java/src/test/java/com/ibtp/kontor/tradingcards/dal/PositionImplTest.java @@ -0,0 +1,44 @@ +package com.ibtp.kontor.tradingcards.dal; + +import com.ibtp.kontor.dal.DatabaseManager; +import com.ibtp.kontor.util.LocalTestDatabase; + +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; + +import com.ibtp.kontor.tradingcards.entity.PositionEntity; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.util.Collection; + +/** + * Created by tpeetz on 27.01.2015. + */ +public class PositionImplTest { + + @BeforeAll + public static void setUp() { + DatabaseManager.setDatabase(new LocalTestDatabase()); + } + + @Test + public void testPositionAddAndDelete() { + String positionName = "testPositionAddAndDelete"; + PositionImpl positionImpl = new PositionImpl(); + PositionEntity position = positionImpl.addPosition(positionName); + Collection resultList = positionImpl.findByName(positionName); + assertEquals(1, resultList.size()); + positionImpl.delete(position); + resultList = positionImpl.findByName(positionName); + assertEquals(0, resultList.size()); + } + + @Test + public void testPositionFindAll() { + PositionImpl positionImpl = new PositionImpl(); + Collection resultList = positionImpl.findAll(); + assertEquals(0, resultList.size()); + } +} + diff --git a/java/src/test/java/com/ibtp/kontor/tradingcards/dal/SportCardImplTest.java b/java/src/test/java/com/ibtp/kontor/tradingcards/dal/SportCardImplTest.java new file mode 100644 index 0000000..6cc8b5c --- /dev/null +++ b/java/src/test/java/com/ibtp/kontor/tradingcards/dal/SportCardImplTest.java @@ -0,0 +1,28 @@ +package com.ibtp.kontor.tradingcards.dal; + +import com.ibtp.kontor.dal.DatabaseManager; +import com.ibtp.kontor.util.LocalTestDatabase; + +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; + +/** + * Created by tpeetz on 27.01.2015. + */ +public class SportCardImplTest { + + @BeforeAll + public static void setUp() { + DatabaseManager.setDatabase(new LocalTestDatabase()); + } + + @Test + public void testSportCardAddAndDelete() { + + } + + @Test + public void testSportCardFindAll() { + + } +} diff --git a/java/src/test/java/com/ibtp/kontor/tradingcards/dal/SportImplTest.java b/java/src/test/java/com/ibtp/kontor/tradingcards/dal/SportImplTest.java new file mode 100644 index 0000000..6a4d580 --- /dev/null +++ b/java/src/test/java/com/ibtp/kontor/tradingcards/dal/SportImplTest.java @@ -0,0 +1,44 @@ +package com.ibtp.kontor.tradingcards.dal; + +import com.ibtp.kontor.dal.DatabaseManager; +import com.ibtp.kontor.util.LocalTestDatabase; + +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; + +import com.ibtp.kontor.tradingcards.entity.SportEntity; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.util.Collection; +import java.util.List; + +/** + * Created by TPEETZ on 19.01.2015. + */ +public class SportImplTest { + + @BeforeAll + public static void setUp() { + DatabaseManager.setDatabase(new LocalTestDatabase()); + } + + @Test + public void testSportAddAndDelete() { + String sportName = "testSportAddAndDelete"; + SportImpl sportImpl = new SportImpl(); + SportEntity sport = sportImpl.addSport(sportName); + List sportList = sportImpl.findByName(sportName); + assertEquals(1, sportList.size()); + sportImpl.delete(sport); + List result = sportImpl.findByName(sportName); + assertEquals(0, result.size()); + } + + @Test + public void testSportFindAll() { + SportImpl sportImpl = new SportImpl(); + Collection resultList = sportImpl.findAll(); + assertEquals(0, resultList.size()); + } +} diff --git a/java/src/test/java/com/ibtp/kontor/tradingcards/dal/TeamImplTest.java b/java/src/test/java/com/ibtp/kontor/tradingcards/dal/TeamImplTest.java new file mode 100644 index 0000000..7e94a1b --- /dev/null +++ b/java/src/test/java/com/ibtp/kontor/tradingcards/dal/TeamImplTest.java @@ -0,0 +1,44 @@ +package com.ibtp.kontor.tradingcards.dal; + +import com.ibtp.kontor.dal.DatabaseManager; +import com.ibtp.kontor.util.LocalTestDatabase; + +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; + +import com.ibtp.kontor.tradingcards.entity.TeamEntity; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.util.Collection; + +/** + * Created by tpeetz on 20.01.2015. + */ +public class TeamImplTest { + + @BeforeAll + public static void setUp() { + DatabaseManager.setDatabase(new LocalTestDatabase()); + } + + @Test + public void testTeamAddAndDelete() { + String teamName = "testTeamAddAndDelete"; + TeamEntity team = new TeamEntity(teamName); + TeamImpl teamImpl = new TeamImpl(); + teamImpl.store(team); + Collection resultList = teamImpl.findByName(teamName); + assertEquals(1, resultList.size()); + teamImpl.delete(team); + resultList = teamImpl.findByName(teamName); + assertEquals(0, resultList.size()); + } + + @Test + public void testTeamFindAll() { + TeamImpl teamImpl = new TeamImpl(); + Collection resultList = teamImpl.findAll(); + assertEquals(0, resultList.size()); + } +} diff --git a/java/src/test/java/com/ibtp/kontor/util/LocalTestDatabase.java b/java/src/test/java/com/ibtp/kontor/util/LocalTestDatabase.java new file mode 100644 index 0000000..503104a --- /dev/null +++ b/java/src/test/java/com/ibtp/kontor/util/LocalTestDatabase.java @@ -0,0 +1,110 @@ +package com.ibtp.kontor.util; + +import com.ibtp.kontor.dal.Database; +import org.hibernate.jpa.HibernatePersistenceProvider; +import org.hsqldb.Server; + +import javax.persistence.EntityManager; +import javax.persistence.EntityManagerFactory; +import javax.persistence.Persistence; +import javax.persistence.spi.PersistenceProvider; +import javax.persistence.spi.PersistenceProviderResolver; +import javax.persistence.spi.PersistenceProviderResolverHolder; +import java.io.PrintWriter; +import java.util.Arrays; +import java.util.List; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * Created by TPEETZ on 21.01.2015. + */ +public class LocalTestDatabase implements Database { + + private static Server server; + private static EntityManagerFactory factory; + private static EntityManager em; + private static Logger logger = LoggerFactory.getLogger(LocalTestDatabase.class.getName()); + + static { + logger.info("initialization and starting database"); + LocalTestDatabase.assureDatabaseRunning(); + } + + public LocalTestDatabase() { + logger.info("LocalDatabaseTest started"); + } + + private static void assureDatabaseRunning() { + if (LocalTestDatabase.server == null) { + LocalTestDatabase.startDatabase(); + } + } + + private static void startDatabase() { + logger.info("startDatabase as kontor in hsqldb_databases/test"); + LocalTestDatabase.server = new Server(); + LocalTestDatabase.server.setAddress("localhost"); + LocalTestDatabase.server.setDatabaseName(0, "kontor"); + LocalTestDatabase.server.setDatabasePath(0, "file:build/hsqldb_databases/test"); + LocalTestDatabase.server.setPort(2345); + LocalTestDatabase.server.setTrace(true); + LocalTestDatabase.server.setLogWriter(new PrintWriter(System.out)); + LocalTestDatabase.server.start(); + } + + private static void stopDatabase() { + server.shutdown(); + } + + private static EntityManagerFactory getFactory() { + if (LocalTestDatabase.factory == null) { + LocalTestDatabase.assureDatabaseRunning(); + PersistenceProviderResolverHolder.setPersistenceProviderResolver(new PersistenceProviderResolver() { + private final List providers_ = Arrays.asList((PersistenceProvider) new HibernatePersistenceProvider()); + + @Override + public void clearCachedProviders() { + // Auto-generated method stub + } + + @Override + public List getPersistenceProviders() { + return providers_; + } + }); + LocalTestDatabase.factory = Persistence.createEntityManagerFactory("com.ibtp.kontor"); + logger.info("EntityManagerFactory(com.ibtp.kontor) created"); + } + return factory; + } + + private static EntityManager getSingleEntityManager() { + return LocalTestDatabase.em; + } + + private static void setSingleEntityManager(EntityManager manager) { + LocalTestDatabase.em = manager; + } + + @Override + public EntityManager getEntityManager() { + if (getSingleEntityManager() == null) { + setSingleEntityManager(getFactory().createEntityManager()); + logger.info("EntityManager created"); + } + return getSingleEntityManager(); + } + + @Override + public String toString() { + String serverMessage; + if (LocalTestDatabase.server == null) { + serverMessage = "server:null"; + } else { + serverMessage = LocalTestDatabase.server.toString(); + } + return LocalTestDatabase.class.getName() + " " + serverMessage; + } +} diff --git a/java/src/test/resources/META-INF/persistence.xml b/java/src/test/resources/META-INF/persistence.xml new file mode 100644 index 0000000..35d671b --- /dev/null +++ b/java/src/test/resources/META-INF/persistence.xml @@ -0,0 +1,39 @@ + + + org.hibernate.jpa.HibernatePersistenceProvider + com.ibtp.kontor.comics.entity.ArtistEntity + com.ibtp.kontor.comics.entity.ComicEntity + com.ibtp.kontor.comics.entity.IssueEntity + com.ibtp.kontor.comics.entity.StoryArcEntity + com.ibtp.kontor.comics.entity.VolumeEntity + com.ibtp.kontor.comics.entity.PublisherEntity + com.ibtp.kontor.library.entity.AuthorEntity + com.ibtp.kontor.library.entity.ArticleEntity + com.ibtp.kontor.library.entity.BookEntity + com.ibtp.kontor.library.entity.FileEntity + com.ibtp.kontor.library.entity.TitleEntity + com.ibtp.kontor.tradingcards.entity.SportEntity + com.ibtp.kontor.tradingcards.entity.TeamEntity + com.ibtp.kontor.tradingcards.entity.PositionEntity + com.ibtp.kontor.tradingcards.entity.PlayerEntity + com.ibtp.kontor.tradingcards.entity.ManufacturerEntity + com.ibtp.kontor.tradingcards.entity.BaseSetEntity + com.ibtp.kontor.tradingcards.entity.InsertEntity + com.ibtp.kontor.tradingcards.entity.ParallelSetEntity + com.ibtp.kontor.tradingcards.entity.SportCardEntity + + + + + + + + + + + + + diff --git a/java/src/test/resources/logback.xml b/java/src/test/resources/logback.xml new file mode 100644 index 0000000..5254e50 --- /dev/null +++ b/java/src/test/resources/logback.xml @@ -0,0 +1,41 @@ + + + + + + %d{yyyy-MM-dd_HH:mm:ss.SSS} %-5level %logger{36} - %msg%n + + + + + + build/kontortest.log + + %d{yyyy-MM-dd_HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + + + + build/kontortest.%i.log.zip + 1 + 10 + + + + 2MB + + + + + + + + + + + + + + diff --git a/java/tysc-20041010-1819.sql b/java/tysc-20041010-1819.sql new file mode 100644 index 0000000..167c41d --- /dev/null +++ b/java/tysc-20041010-1819.sql @@ -0,0 +1,168 @@ +/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; +/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; +/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE=NO_AUTO_VALUE_ON_ZERO */; +CREATE DATABASE /*!32312 IF NOT EXISTS*/ `tysc`; +USE `tysc`; + +DROP TABLE IF EXISTS `angebote`; +CREATE TABLE `angebote` ( + `user_id` int(11) NOT NULL default '0', + `karte_id` int(11) NOT NULL default '0' +) TYPE=MyISAM; +INSERT INTO `angebote` (`user_id`,`karte_id`) VALUES (3,28),(3,30); + +DROP TABLE IF EXISTS `benutzer`; +CREATE TABLE `benutzer` ( + `ID` int(11) NOT NULL auto_increment, + `forename` varchar(40) default NULL, + `surname` varchar(40) default NULL, + `strasse` varchar(60) default NULL, + `plz` int(6) default NULL, + `ort` varchar(20) default NULL, + `username` varchar(20) default NULL, + `email` varchar(60) default NULL, + `password` varchar(32) default NULL, + `java` char(1) default NULL, + `language` int(11) NOT NULL default '0', + PRIMARY KEY (`ID`) +) TYPE=MyISAM; +INSERT INTO `benutzer` (`ID`,`forename`,`surname`,`strasse`,`plz`,`ort`,`username`,`email`,`password`,`java`,`language`) VALUES (1,'Thomas','Peetz','Reichweindamm 24',13627,'Berlin','gophard','thomas.peetz@snafu.de','t.log1n','N',1),(2,'Heiko','John','Johannastr.49',13581,'Berlin','John','healjo@hotmail.com','redskins','N',1),(3,'Thomas','Peetz','Reichweindamm 24',13627,'Berlin','peetz','gophard@snafu.de','peetz','N',1); + +DROP TABLE IF EXISTS `changelog`; +CREATE TABLE `changelog` ( + `datum` date default NULL, + `tablename` varchar(20) default NULL, + `id` int(11) NOT NULL default '0' +) TYPE=MyISAM; +INSERT INTO `changelog` (`datum`,`tablename`,`id`) VALUES ('2002-02-27','benutzer',1),('2002-02-28','benutzer',2),('2002-03-05','benutzer',3),('2002-03-05','angebote',0),('2002-03-05','angebote',0); + +DROP TABLE IF EXISTS `hersteller`; +CREATE TABLE `hersteller` ( + `ID` int(11) NOT NULL auto_increment, + `name` varchar(30) default NULL, + PRIMARY KEY (`ID`) +) TYPE=MyISAM; +INSERT INTO `hersteller` (`ID`,`name`) VALUES (1,'Pacific'),(2,'Fleer'),(3,'Bowman'),(6,'Topps'),(7,'Donruss'),(8,'Score'),(9,'Flair'); + +DROP TABLE IF EXISTS `inserts`; +CREATE TABLE `inserts` ( + `ID` int(11) NOT NULL auto_increment, + `hersteller_id` int(11) NOT NULL default '0', + `name` varchar(40) default NULL, + PRIMARY KEY (`ID`,`hersteller_id`) +) TYPE=MyISAM; +INSERT INTO `inserts` (`ID`,`hersteller_id`,`name`) VALUES (1,2,'Mystique Big Buzz'); + +DROP TABLE IF EXISTS `karte`; +CREATE TABLE `karte` ( + `ID` int(11) NOT NULL auto_increment, + `spieler_id` int(11) NOT NULL default '0', + `team_id` int(11) NOT NULL default '0', + `hersteller_id` int(11) NOT NULL default '0', + `serie_id` int(11) default NULL, + `parallel_id` int(11) default NULL, + `inserts_id` int(11) default NULL, + `rookie` char(1) default NULL, + `jahr` int(4) default NULL, + `nummer` int(11) default NULL, + PRIMARY KEY (`ID`) +) TYPE=MyISAM; +INSERT INTO `karte` (`ID`,`spieler_id`,`team_id`,`hersteller_id`,`serie_id`,`parallel_id`,`inserts_id`,`rookie`,`jahr`,`nummer`) VALUES (12,12,13,1,1,0,0,'N',2001,212),(1,1,2,1,1,0,0,'N',2001,185),(2,2,2,1,1,0,0,'N',2001,250),(3,3,8,1,1,0,0,'N',2001,103),(4,4,8,1,1,0,0,'N',2001,112),(5,5,6,1,1,0,0,'N',2001,37),(6,6,6,1,1,0,0,'N',2001,38),(7,7,6,1,1,0,0,'N',2001,31),(8,8,10,1,1,0,0,'N',2001,338),(9,9,10,1,1,0,0,'N',2001,335),(10,10,10,1,1,0,0,'N',2001,345),(11,11,13,1,1,0,0,'N',2001,213),(13,13,14,1,1,0,0,'N',2001,311),(14,14,14,1,1,0,0,'N',2001,312),(15,15,16,1,1,0,0,'N',2001,403),(16,16,16,1,1,0,0,'N',2001,397),(17,17,16,1,1,0,0,'N',2001,404),(18,18,18,1,1,0,0,'N',2001,116),(19,19,18,1,1,0,0,'N',2001,122),(20,20,18,1,1,0,0,'N',2001,117),(21,21,19,1,1,0,0,'N',2001,281),(22,22,19,1,1,0,0,'N',2001,321),(23,23,20,1,1,0,0,'N',2001,331),(24,24,20,1,1,0,0,'N',2001,324),(25,25,21,1,1,0,0,'N',2001,445),(26,26,27,1,1,0,0,'N',2001,28),(27,27,27,1,1,0,0,'N',2001,17),(28,28,27,1,1,0,0,'N',2001,23),(29,29,29,1,1,0,0,'N',2001,273); +INSERT INTO `karte` (`ID`,`spieler_id`,`team_id`,`hersteller_id`,`serie_id`,`parallel_id`,`inserts_id`,`rookie`,`jahr`,`nummer`) VALUES (30,30,31,1,1,0,0,'N',2001,380),(31,31,31,1,1,0,0,'N',2001,390),(32,32,31,1,1,0,0,'N',2001,381),(33,33,31,1,1,0,0,'N',2001,387),(34,34,31,1,1,0,0,'N',2001,386),(35,35,30,1,1,0,0,'N',2001,349),(36,36,30,1,1,0,0,'N',2001,350),(37,37,44,5,8,0,0,'N',1994,106); + +DROP TABLE IF EXISTS `language`; +CREATE TABLE `language` ( + `ID` int(11) NOT NULL auto_increment, + `name` varchar(15) default NULL, + PRIMARY KEY (`ID`) +) TYPE=MyISAM; + +DROP TABLE IF EXISTS `mannschaft`; +CREATE TABLE `mannschaft` ( + `ID` int(11) NOT NULL auto_increment, + `team_id` int(11) NOT NULL default '0', + `sportart_id` int(11) NOT NULL default '0', + PRIMARY KEY (`ID`) +) TYPE=MyISAM; + +DROP TABLE IF EXISTS `parallelset`; +CREATE TABLE `parallelset` ( + `ID` int(11) NOT NULL auto_increment, + `hersteller_id` int(11) NOT NULL default '0', + `name` varchar(40) default NULL, + PRIMARY KEY (`ID`,`hersteller_id`) +) TYPE=MyISAM; +INSERT INTO `parallelset` (`ID`,`hersteller_id`,`name`) VALUES (1,2,'Mystique Gold'),(2,1,'Pacific Copper'),(3,1,'Pacific Gold'); + +DROP TABLE IF EXISTS `position`; +CREATE TABLE `position` ( + `ID` int(11) NOT NULL auto_increment, + `sportart_id` int(11) NOT NULL default '0', + `name` varchar(20) default NULL, + PRIMARY KEY (`ID`) +) TYPE=MyISAM; +INSERT INTO `position` (`ID`,`sportart_id`,`name`) VALUES (1,1,'QB'),(2,1,'WR'),(3,1,'RB'),(4,1,'LB'),(5,1,'TE'),(6,1,'FB'),(7,1,'SS'),(8,1,'DE'),(9,1,'K'),(10,1,'P'),(11,1,'LG'),(12,1,'RG'),(13,1,'OF'),(14,1,'DB'),(15,1,'CB'),(16,2,'C'),(17,2,'1B'),(18,2,'2B'),(19,2,'3B'),(20,2,'SS'),(21,2,'LF'),(22,2,'CF'),(23,2,'RF'),(24,2,'DH'),(25,2,'P'); + +DROP TABLE IF EXISTS `serie`; +CREATE TABLE `serie` ( + `ID` int(11) NOT NULL auto_increment, + `hersteller_id` int(11) NOT NULL default '0', + `name` varchar(40) default NULL, + PRIMARY KEY (`ID`,`hersteller_id`) +) TYPE=MyISAM; +INSERT INTO `serie` (`ID`,`hersteller_id`,`name`) VALUES (1,1,'Pacific'),(2,2,'Fleer'),(3,3,'Bowman'),(4,4,'Leaf'),(5,2,'Ultra'),(6,2,'Mystique'),(7,1,'Finest Hour'),(8,5,'SP'),(9,5,'SPX'),(10,5,'SP Authentic'),(11,5,'Black Diamond'); + +DROP TABLE IF EXISTS `spiele`; +CREATE TABLE `spiele` ( + `datum` date default NULL, + `gast` int(11) NOT NULL default '0', + `gast_pkt` int(11) default NULL, + `heim` int(11) NOT NULL default '0', + `heim_pkt` int(11) default NULL +) TYPE=MyISAM; + +DROP TABLE IF EXISTS `spieler`; +CREATE TABLE `spieler` ( + `ID` int(11) NOT NULL auto_increment, + `name` varchar(40) default NULL, + PRIMARY KEY (`ID`) +) TYPE=MyISAM; +INSERT INTO `spieler` (`ID`,`name`) VALUES (1,'Pathon, Jerome'),(2,'Bruschi, Tedy'),(3,'Couch, Tim'),(4,'Shea, Aaron'),(5,'Lewis, Jamal'),(6,'Lewis, Jermaine'),(7,'Banks, Tony'),(8,'Fuamatu-Ma\'Afala, Chris'),(9,'Bettis, Jerome'),(10,'Stewart, Kordell'),(11,'Moon, Warren'),(12,'Lockett, Kevin'),(13,'Gannon, Rich'),(14,'Jett, James'),(15,'Strong, Mack'),(16,'Huard, Brock'),(17,'Watters, Ricky'),(18,'Aikman, Troy'),(19,'LaFleur, David'),(20,'Brazzell, Chris'),(21,'Dayne, Ron'),(22,'Brown, Na'),(23,'Small, Torrance'),(24,'Lewis, Chad'),(25,'Murrell, Adrian'),(26,'Smith, Maurice'),(27,'Chandler, Chris'),(28,'Kanell, Danny'),(29,'Williams, Ricky'),(30,'Garcia, Jeff'),(31,'Streets, Tai'),(32,'Garner, Charlie'),(33,'Rice, Jerry'),(34,'Owens, Terrell'),(35,'Bruce, Isaac'),(36,'Canidate, Trung'); + +DROP TABLE IF EXISTS `spielerposition`; +CREATE TABLE `spielerposition` ( + `spieler_id` int(11) NOT NULL default '0', + `sportart_id` int(11) NOT NULL default '0', + `position_id` int(11) NOT NULL default '0' +) TYPE=MyISAM; + +DROP TABLE IF EXISTS `sportart`; +CREATE TABLE `sportart` ( + `ID` int(11) NOT NULL auto_increment, + `name` varchar(30) default NULL, + PRIMARY KEY (`ID`) +) TYPE=MyISAM; +INSERT INTO `sportart` (`ID`,`name`) VALUES (1,'Football'),(2,'Baseball'),(3,'Basketball'),(4,'Hockey'); + +DROP TABLE IF EXISTS `suche`; +CREATE TABLE `suche` ( + `user_id` int(11) NOT NULL default '0', + `karte_id` int(11) NOT NULL default '0' +) TYPE=MyISAM; + +DROP TABLE IF EXISTS `team`; +CREATE TABLE `team` ( + `ID` int(11) NOT NULL auto_increment, + `sportart_id` int(11) NOT NULL default '0', + `name` varchar(40) default NULL, + `short` varchar(15) default NULL, + PRIMARY KEY (`ID`) +) TYPE=MyISAM; +INSERT INTO `team` (`ID`,`sportart_id`,`name`,`short`) VALUES (1,1,'Buffalo Bills','Bills'),(2,1,'Indianapolis Colts','Colts'),(3,1,'Miami Dolphins','Dolphins'),(4,1,'New England Patriots','Patriots'),(5,1,'New York Jets','Jets'),(6,1,'Baltimore Ravens','Ravens'),(7,1,'Cincinnati Bengals','Bengals'),(8,1,'Cleveland Browns','Browns'),(9,1,'Jacksonville Jaguars','Jaguars'),(10,1,'Pittsburgh Steelers','Steelers'),(11,1,'Tennessee Titans','Titans'),(12,1,'Denver Broncos','Broncos'),(13,1,'Kansas City Chiefs','Chiefs'),(14,1,'Oakland Raiders','Raiders'),(15,1,'San Diego Chargers','Chargers'),(16,1,'Seattle Seahawks','Seahawks'),(17,1,'Arizona Cardinals','Cardinals'),(18,1,'Dallas Cowboys','Cowboys'),(19,1,'New York Giants','Giants'),(20,1,'Philadelphia Eagles','Eagles'),(21,1,'Washington Redskins','Redskins'),(22,1,'Chicago Bears','Bears'),(23,1,'Detroit Lions','Lions'),(24,1,'Green Bay Packers','Packers'),(25,1,'Minnesota Vikings','Vikings'),(26,1,'Tampa Bay Buccaneers','Buccaneers'),(27,1,'Atlanta Falcons','Falcons'),(28,1,'Carolina Panthers','Panthers'); +INSERT INTO `team` (`ID`,`sportart_id`,`name`,`short`) VALUES (29,1,'New Orleans Saints','Saints'),(30,1,'St.Louis Rams','Rams'),(31,1,'San Francisco 49ers','49ers'),(32,2,'Baltimore Orioles','Orioles'),(33,2,'Boston Red Sox','Red Sox'),(34,2,'New York Yankees','Yankees'),(35,2,'Tampa Bay Devil Rays','Devil Rays'),(36,2,'Toronto Blue Jays','Blue Jays'),(37,2,'Chicago White Sox','White Sox'),(38,2,'Cleveland Indians','Indians'),(39,2,'Detroit Tigers','Tigers'),(40,2,'Kansas City Royals','Royals'),(41,2,'Minnesota Twins','Twins'),(42,2,'Anaheim Angels','Angels'),(43,2,'Oakland Athletics','Athletics'),(44,2,'Seattle Mariners','Mariners'),(45,2,'Texas Rangers','Rangers'),(46,2,'Atlanta Braves','Braves'),(47,2,'Florida Marlins','Marlins'),(48,2,'Montreal Expos','Expos'),(49,2,'New York Mets','Mets'),(50,2,'Philadelphia Phillies','Phillies'),(51,2,'Chicago Cubs','Cubs'),(52,2,'Cincinnati Reds','Reds'),(53,2,'Houston Astros','Astros'),(54,2,'Milwaukee Brewers','Brewers'),(55,2,'Pittsburgh Pirates','Pirates'),(56,2,'St.Louis Cardinals','Cardinals'); +INSERT INTO `team` (`ID`,`sportart_id`,`name`,`short`) VALUES (57,2,'Arizona Diamondbacks','Diamondbacks'),(58,2,'Colorado Rockies','Rockies'),(59,2,'Los Angeles Dodgers','Dodgers'),(60,2,'San Diego Padres','Padres'),(61,2,'San Francisco Giants','Giants'),(62,3,'Boston Celtics','Celtics'),(63,3,'Miami Heat','Heat'),(64,3,'New Jersey Nets','Mets'),(65,3,'New York Knicks','Knicks'),(66,3,'Orlando Magic','Magic'),(67,3,'Philadelphia 76ers','76ers'),(68,3,'Washington Wizards','Wizards'),(69,3,'Atlanta Hawks','Hawks'),(70,3,'Charlotte Hornets','Hornets'),(71,3,'Chicago Bulls','Bulls'),(72,3,'Cleveland Cavaliers','Cavaliers'),(73,3,'Detroit Pistons','Pistons'),(74,3,'Indiana Pacers','Pacers'),(75,3,'Milwaukee Bucks','Bucks'),(76,3,'Toronto Raptors','Raptors'),(77,3,'Dallas Mavericks','Mavericks'),(78,3,'Denver Nuggets','Nuggets'),(79,3,'Houston Rockets','Rockets'),(80,3,'Minnesota Timberwolves','Timberwolves'),(81,3,'San Antonio Spurs','Spurs'),(82,3,'Utah Jazz','Jazz'),(83,3,'Vancouver Grizzlies','Grizzlies'),(84,3,'Golden State Warriors','Warriors'); +INSERT INTO `team` (`ID`,`sportart_id`,`name`,`short`) VALUES (85,3,'Los Angeles Clippers','Clippers'),(86,3,'Los Angeles Lakers','Lakers'),(87,3,'Phoenix Suns','Suns'),(88,3,'Portland Trail Blazers','Blazers'),(89,3,'Sacramento Kings','Kings'),(90,3,'Seattle SuperSonics','SuperSonics'),(91,4,'Boston Bruins','Bruins'),(92,4,'Buffalo Sabres','Sabres'),(93,4,'Montreal Canadiens','Canadiens'),(94,4,'Ottawa Senators','Senators'),(95,4,'Toronto Maple Leafs','Maple Leafs'),(96,4,'New Jersey Devils','Devils'),(97,4,'New York Islander','Islander'),(98,4,'New York Rangers','Rangers'),(99,4,'Philadelphia Flyers','Flyers'),(100,4,'Pittsburgh Penguins','Penguins'),(101,4,'Atlanta Trashers','Trashers'),(102,4,'Carolina Hurricanes','Hurricanes'),(103,4,'Florida Panthers','Panthers'),(104,4,'Tampa Bay Lightnings','Lightnings'),(105,4,'Washington Capitals','Capitals'),(106,4,'Chicago Blackhawks','Blackhawks'),(107,4,'Columbo Blue Jackets','Blue Jackets'),(108,4,'Detroit Red Wings','Red Wings'),(109,4,'Nashville Predators','Predators'),(110,4,'St.Louis Blues','Blues'); +INSERT INTO `team` (`ID`,`sportart_id`,`name`,`short`) VALUES (111,4,'Calgary Flames','Flames'),(112,4,'Colorado Avalanche','Avalanche'),(113,4,'Edmonton Oilers','Oilers'),(114,4,'Minnesota Wild','Wild'),(115,4,'Vancouver Canucks','Canucks'),(116,4,'Anaheim Mighty Ducks','Mighty Ducks'),(117,4,'Dallas Stars','Stars'),(118,4,'Los Angeles Kings','Kings'),(119,4,'Phoenix Coyotes','Coyotes'),(120,4,'San Jose Sharks','Sharks'),(121,1,'Houston Texans','Texans'),(122,1,'Houston Oilers','Oilers'); +/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; +/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; +/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; diff --git a/springboot/docker-compose.yml b/springboot/docker-compose.yml index 0adf164..fc4e875 100644 --- a/springboot/docker-compose.yml +++ b/springboot/docker-compose.yml @@ -11,21 +11,21 @@ services: ports: - 3316:3306 networks: - - back-end + - database volumes: - mariadb-storage:/var/lib/mysql:rw kontor: image: kontor restart: unless-stopped networks: - - back-end - - front-end + - database + - frontend ports: - 8000:8000 networks: - back-end: - front-end: + database: + frontend: volumes: mariadb-storage: