Skip to content

Commit

Permalink
GameToGameTitleConnection; new DAOs; new BaseLists-Classes; new JUnit…
Browse files Browse the repository at this point in the history
…-Tests
  • Loading branch information
kultpower committed Jan 13, 2014
1 parent eeef4a9 commit ab14217
Show file tree
Hide file tree
Showing 19 changed files with 549 additions and 80 deletions.
17 changes: 16 additions & 1 deletion src/main/java/org/oregami/data/BaseListFiller.java
Expand Up @@ -4,6 +4,7 @@
import org.oregami.entities.datalist.DemoContentType;
import org.oregami.entities.datalist.GameEntryType;
import org.oregami.entities.datalist.ReleaseType;
import org.oregami.entities.datalist.TitleType;

import com.google.inject.Guice;
import com.google.inject.Inject;
Expand All @@ -25,6 +26,9 @@ public class BaseListFiller {

@Inject
private DemoContentTypeDao demoContentTypeDao;

@Inject
private TitleTypeDao titleTypeDao;

public static BaseListFiller instance() {
if (instance==null) {
Expand All @@ -42,6 +46,7 @@ public void initBaseLists() {
initGameEntryType();
initDemoContentType();
initReleaseType();
initTitleType();
initialized=true;
}
}
Expand Down Expand Up @@ -71,6 +76,16 @@ private void initReleaseType() {
releaseTypeDao.save(new ReleaseType(ReleaseType.NATIVE_DEVELOPMENT));
releaseTypeDao.save(new ReleaseType(ReleaseType.EMULATOR_RELEASE));
releaseTypeDao.save(new ReleaseType(ReleaseType.PORT));
}
}

private void initTitleType() {
titleTypeDao.save(new TitleType(TitleType.MAIN_TITLE));
titleTypeDao.save(new TitleType(TitleType.ABBREVIATION));
titleTypeDao.save(new TitleType(TitleType.BUDGET_RELEASE_TITLE));
titleTypeDao.save(new TitleType(TitleType.DEVELOPMENT_TITLE));
titleTypeDao.save(new TitleType(TitleType.INOFFICIAL_TITLE));
titleTypeDao.save(new TitleType(TitleType.RE_RELEASE_TITLE));

}

}
12 changes: 9 additions & 3 deletions src/main/java/org/oregami/data/BaseListFinder.java
Expand Up @@ -5,12 +5,12 @@
import org.oregami.entities.datalist.GameEntryType;
import org.oregami.entities.datalist.ReleaseGroupReason;
import org.oregami.entities.datalist.ReleaseType;
import org.oregami.entities.datalist.TitleType;

import com.google.inject.Guice;
import com.google.inject.Inject;
import com.google.inject.Injector;
import com.google.inject.persist.PersistService;
import com.google.inject.persist.Transactional;
import com.google.inject.persist.jpa.JpaPersistModule;

public class BaseListFinder {
Expand All @@ -36,6 +36,9 @@ public static BaseListFinder instance() {

@Inject
ReleaseTypeDao releaseTypeDao;

@Inject
TitleTypeDao titleTypeDao;

@Inject
DemoContentTypeDao demoContentTypeDao;
Expand All @@ -47,12 +50,15 @@ public GameEntryType getGameEntryType(String value) {
public ReleaseType getReleaseType(String value) {
return releaseTypeDao.findByName(value);
}


public TitleType getTitleType(String value) {
return titleTypeDao.findByName(value);
}

public ReleaseGroupReason getReleaseGroupReason(String value) {
return releaseGroupReasonDao.findByName(value);
}

@Transactional
public DemoContentType getDemoContentType(String value) {
return demoContentTypeDao.findByName(value);
}
Expand Down
171 changes: 150 additions & 21 deletions src/main/java/org/oregami/data/DatabaseFiller.java
@@ -1,18 +1,26 @@
package org.oregami.data;

import java.util.Arrays;
import java.util.List;

import javax.persistence.EntityManager;

import org.apache.log4j.Logger;
import org.oregami.dropwizard.OregamiService;
import org.oregami.entities.Game;
import org.oregami.entities.GameTitle;
import org.oregami.entities.GameToGameTitleConnection;
import org.oregami.entities.KeyObjects.SystemKey;
import org.oregami.entities.ReleaseGroup;
import org.oregami.entities.datalist.DemoContentType;
import org.oregami.entities.datalist.GameEntryType;
import org.oregami.entities.datalist.ReleaseType;
import org.oregami.entities.datalist.TitleType;

import com.google.inject.Guice;
import com.google.inject.Inject;
import com.google.inject.Injector;
import com.google.inject.persist.PersistService;
import com.google.inject.persist.Transactional;
import com.google.inject.persist.jpa.JpaPersistModule;

/**
Expand All @@ -25,8 +33,23 @@ public class DatabaseFiller {

private static DatabaseFiller instance;

private static Injector injector = null;

Logger logger = Logger.getLogger(DatabaseFiller.class);

private static List<String> dataTables =
Arrays.asList("GameTitle", "GameToGameTitleConnection", "Game", "Release", "ReleaseGroup");

private static List<String> baseListDataTables =
Arrays.asList("BusinessModel", "CensorshipType", "DemoContentType", "GameEntryType", "ReleaseGroupReason", "ReleaseType", "RemakeEnhancementType", "TitleType", "UnreleaseState");

@Inject
private GameDao gameDao;

@Inject
private GameDao gameRepository;
private GameTitleDao gameTitleDao;



BaseListFinder baseListFinder = BaseListFinder.instance();

Expand All @@ -35,7 +58,7 @@ public class DatabaseFiller {
public static DatabaseFiller getInstance() {
if (instance==null) {
JpaPersistModule jpaPersistModule = OregamiService.createJpaModule();
Injector injector = Guice.createInjector(jpaPersistModule);
injector = Guice.createInjector(jpaPersistModule);
instance = injector.getInstance(DatabaseFiller.class);
PersistService persistService = injector.getInstance(PersistService.class);
persistService.start();
Expand All @@ -46,45 +69,129 @@ public static DatabaseFiller getInstance() {
private void addMonkeyIsland() {
Game gameMonkeyIsland = new Game();

// gameMonkeyIsland.setGameEntryType(gameEntryTypeDao.findByName(GameEntryType.GAME));
gameMonkeyIsland.setGameEntryType(baseListFinder.getGameEntryType(GameEntryType.GAME));

gameMonkeyIsland.addGameTitle(new GameTitle("Monkey Island"));
gameMonkeyIsland.addGameTitle(new GameTitle("Monkey Island 1"));
gameMonkeyIsland.addGameTitle(new GameTitle("The Secret of Monkey Island"));

ReleaseGroup rgDos = new ReleaseGroup("DOS-Demo", SystemKey.MSDOS, baseListFinder.getReleaseType(ReleaseType.NATIVE_DEVELOPMENT));
gameTitleDao.save(new GameTitle("The Secret of Monkey Island"));
gameTitleDao.save(new GameTitle("Le Secret de L'Ile aux Singes"));
gameTitleDao.save(new GameTitle("El Secreto de Monkey Island"));
gameTitleDao.save(new GameTitle("Monkey Island"));
gameTitleDao.save(new GameTitle("Monkey Island 1"));
GameTitle gameTitle = new GameTitle("猴島小英雄");
gameTitle.setStandardTransliteration("The Secret of Monkey Island");
gameTitleDao.save(gameTitle);

GameToGameTitleConnection gameToGameTitleConnection = new GameToGameTitleConnection();
gameToGameTitleConnection.setTitleType(baseListFinder.getTitleType(TitleType.MAIN_TITLE));
gameToGameTitleConnection.setGameTitle(gameTitleDao.findByExactName("The Secret of Monkey Island").get(0));
gameMonkeyIsland.getGameToGameTitleConnectionList().add(gameToGameTitleConnection);

GameToGameTitleConnection gameToGameTitleConnection1 = new GameToGameTitleConnection();
gameToGameTitleConnection1.setTitleType(baseListFinder.getTitleType(TitleType.MAIN_TITLE));
gameToGameTitleConnection1.setGameTitle(gameTitleDao.findByExactName("猴島小英雄").get(0));
gameMonkeyIsland.getGameToGameTitleConnectionList().add(gameToGameTitleConnection1);

GameToGameTitleConnection gameToGameTitleConnection2 = new GameToGameTitleConnection();
gameToGameTitleConnection2.setTitleType(baseListFinder.getTitleType(TitleType.ABBREVIATION));
gameToGameTitleConnection2.setGameTitle(gameTitleDao.findByExactName("Monkey Island").get(0));
gameMonkeyIsland.getGameToGameTitleConnectionList().add(gameToGameTitleConnection2);

GameToGameTitleConnection gameToGameTitleConnection3 = new GameToGameTitleConnection();
gameToGameTitleConnection3.setTitleType(baseListFinder.getTitleType(TitleType.ABBREVIATION));
gameToGameTitleConnection3.setGameTitle(gameTitleDao.findByExactName("Monkey Island 1").get(0));
gameMonkeyIsland.getGameToGameTitleConnectionList().add(gameToGameTitleConnection3);


//#### Atari ST #######
ReleaseGroup rgAtari = new ReleaseGroup("Atari", SystemKey.AtariST, baseListFinder.getReleaseType(ReleaseType.PORT));
gameMonkeyIsland.addReleaseGroup(rgAtari);

//#### Amiga #######
ReleaseGroup rgAmiga = new ReleaseGroup("Amiga", SystemKey.Amiga, baseListFinder.getReleaseType(ReleaseType.PORT));
gameMonkeyIsland.addReleaseGroup(rgAmiga);

ReleaseGroup rgAmigaDemo = new ReleaseGroup("Amiga Demo", SystemKey.Amiga, baseListFinder.getReleaseType(ReleaseType.PORT));
gameMonkeyIsland.addReleaseGroup(rgAmigaDemo);

//#### MS-DOS ######
ReleaseGroup rgDos = new ReleaseGroup("DOS Initial Floppy", SystemKey.MSDOS, baseListFinder.getReleaseType(ReleaseType.NATIVE_DEVELOPMENT));
gameMonkeyIsland.addReleaseGroup(rgDos);

rgDos.addDemoContentType(BaseListFinder.instance().getDemoContentType(DemoContentType.CONTENT_LIMIT));
rgDos.addDemoContentType(BaseListFinder.instance().getDemoContentType(DemoContentType.TECH_DEMO));
ReleaseGroup rgDosVga = new ReleaseGroup("DOS Floppy VGA", SystemKey.MSDOS, baseListFinder.getReleaseType(ReleaseType.NATIVE_DEVELOPMENT));
gameMonkeyIsland.addReleaseGroup(rgDosVga);

ReleaseGroup rgDosEnhancedCDRom = new ReleaseGroup("DOS Enhanced CDROM", SystemKey.MSDOS, baseListFinder.getReleaseType(ReleaseType.NATIVE_DEVELOPMENT));
gameMonkeyIsland.addReleaseGroup(rgDosEnhancedCDRom);

ReleaseGroup rgDosDemo = new ReleaseGroup("DOS Demo", SystemKey.MSDOS, baseListFinder.getReleaseType(ReleaseType.NATIVE_DEVELOPMENT));
gameMonkeyIsland.addReleaseGroup(rgDosDemo);

//#### FMTowns #######
ReleaseGroup rgFMTowns = new ReleaseGroup("FMTowns", SystemKey.FMTowns, baseListFinder.getReleaseType(ReleaseType.PORT));
gameMonkeyIsland.addReleaseGroup(rgFMTowns);

//#### Mac #######
ReleaseGroup rgMac = new ReleaseGroup("Mac", SystemKey.AppleMacintosh, baseListFinder.getReleaseType(ReleaseType.PORT));
gameMonkeyIsland.addReleaseGroup(rgMac);

ReleaseGroup rgMacSE = new ReleaseGroup("Mac SE", SystemKey.AppleMacintosh, baseListFinder.getReleaseType(ReleaseType.PORT));
gameMonkeyIsland.addReleaseGroup(rgMacSE);

gameRepository.save(gameMonkeyIsland);

gameRepository.update(gameMonkeyIsland);
gameDao.save(gameMonkeyIsland);

gameDao.update(gameMonkeyIsland);
}

private void addResidentEvilGame() {

Game gameResidentEvil = new Game();
// gameResidentEvil.setId(2l);
gameResidentEvil.setGameEntryType(baseListFinder.getGameEntryType(GameEntryType.GAME));

gameResidentEvil.addGameTitle(new GameTitle("Resident Evil"));
gameTitleDao.save(new GameTitle("Resident Evil"));
gameTitleDao.save(new GameTitle("Resident Evil: Director's Cut"));

GameToGameTitleConnection gameToGameTitleConnection = new GameToGameTitleConnection();
gameToGameTitleConnection.setTitleType(baseListFinder.getTitleType(TitleType.MAIN_TITLE));
gameToGameTitleConnection.setGameTitle(gameTitleDao.findByExactName("Resident Evil").get(0));
gameResidentEvil.getGameToGameTitleConnectionList().add(gameToGameTitleConnection);

GameToGameTitleConnection gameToGameTitleConnection1 = new GameToGameTitleConnection();
gameToGameTitleConnection1.setTitleType(baseListFinder.getTitleType(TitleType.RE_RELEASE_TITLE));
gameToGameTitleConnection1.setGameTitle(gameTitleDao.findByExactName("Resident Evil: Director's Cut").get(0));
gameResidentEvil.getGameToGameTitleConnectionList().add(gameToGameTitleConnection1);

// ReleaseGroup releaseGroupPlaystation = new ReleaseGroup("Playstation", SystemKey.Playstation, ReleaseGroupReason.ORIGINAL);
// gameResidentEvil.addReleaseGroup(releaseGroupPlaystation);
// ReleaseGroup releaseGroupWindows = new ReleaseGroup("Windows", SystemKey.Windows, ReleaseGroupReason.ORIGINAL);
// gameResidentEvil.addReleaseGroup(releaseGroupWindows);

gameRepository.save(gameResidentEvil);
gameDao.save(gameResidentEvil);
}

private void addXWingGame() {
Game gameXWing = new Game();

gameXWing.addGameTitle(new GameTitle("Star Wars - X-Wing"));
gameXWing.addGameTitle(new GameTitle("Star Wars - X-Wing: Space Combat Simulator"));

gameTitleDao.save(new GameTitle("Star Wars - X-Wing"));
gameTitleDao.save(new GameTitle("X-Wing"));
gameTitleDao.save(new GameTitle("Star Wars - X-Wing: Space Combat Simulator"));

GameToGameTitleConnection gameToGameTitleConnection = new GameToGameTitleConnection();
gameToGameTitleConnection.setTitleType(baseListFinder.getTitleType(TitleType.MAIN_TITLE));
gameToGameTitleConnection.setGameTitle(gameTitleDao.findByExactName("Star Wars - X-Wing: Space Combat Simulator").get(0));
gameXWing.getGameToGameTitleConnectionList().add(gameToGameTitleConnection);

GameToGameTitleConnection gameToGameTitleConnection1 = new GameToGameTitleConnection();
gameToGameTitleConnection1.setTitleType(baseListFinder.getTitleType(TitleType.ABBREVIATION));
gameToGameTitleConnection1.setGameTitle(gameTitleDao.findByExactName("X-Wing").get(0));
gameXWing.getGameToGameTitleConnectionList().add(gameToGameTitleConnection1);

GameToGameTitleConnection gameToGameTitleConnection2 = new GameToGameTitleConnection();
gameToGameTitleConnection2.setTitleType(baseListFinder.getTitleType(TitleType.ABBREVIATION));
gameToGameTitleConnection2.setGameTitle(gameTitleDao.findByExactName("Star Wars - X-Wing").get(0));
gameXWing.getGameToGameTitleConnectionList().add(gameToGameTitleConnection2);



// ReleaseGroup rgDos = new ReleaseGroup("DOS", SystemKey.MSDOS, ReleaseGroupReason.ORIGINAL);
// gameXWing.addReleaseGroup(rgDos);
//
Expand All @@ -97,12 +204,12 @@ private void addXWingGame() {
// ReleaseGroup rgMacEnhanced = new ReleaseGroup("Apple Macintosh", SystemKey.AppleMacintosh, ReleaseGroupReason.ENHANCED);
// gameXWing.addReleaseGroup(rgMacEnhanced);

gameRepository.save(gameXWing);
gameDao.save(gameXWing);
}

private void addGames() {

if (gameRepository.findOne(1L)!=null) return;
if (gameDao.findAll().size()>0) return;

addMonkeyIsland();
addResidentEvilGame();
Expand All @@ -118,6 +225,28 @@ public void initData() {
// addVideoGamesDatabase1992();
// addVideoGamesDatabase1993();
}

@Transactional
public void deleteGameData() {
EntityManager em = injector.getInstance(EntityManager.class);
for (String tableName : dataTables) {
int update = em.createQuery("DELETE FROM " + tableName).executeUpdate();
if (logger.isDebugEnabled()) {
logger.debug("deleted all " + update + " rows from " + tableName);
}
}
}

@Transactional
public void deleteBaseListData() {
EntityManager em = injector.getInstance(EntityManager.class);
for (String tableName : baseListDataTables) {
int update = em.createQuery("DELETE FROM " + tableName).executeUpdate();
if (logger.isDebugEnabled()) {
logger.debug("deleted all " + update + " rows from " + tableName);
}
}
}


}
29 changes: 29 additions & 0 deletions src/main/java/org/oregami/data/GameTitleDao.java
@@ -0,0 +1,29 @@
package org.oregami.data;

import java.util.List;

import javax.persistence.EntityManager;

import org.oregami.entities.GameTitle;

import com.google.inject.Inject;
import com.google.inject.Provider;

public class GameTitleDao extends GenericDAOImpl<GameTitle, Long>{

@Inject
public GameTitleDao(Provider<EntityManager> emf) {
super(emf);
entityClass=GameTitle.class;
}


@SuppressWarnings("unchecked")
public List<GameTitle> findByExactName(String name) {
List<GameTitle> gameTitleList = getEntityManager()
.createNativeQuery("SELECT * FROM GameTitle t where lower(t.nativeSpelling) = :value ", GameTitle.class).setParameter("value", name.toLowerCase()).getResultList();
return gameTitleList;
}


}
1 change: 1 addition & 0 deletions src/main/java/org/oregami/data/ReleaseGroupReasonDao.java
Expand Up @@ -12,6 +12,7 @@ public class ReleaseGroupReasonDao extends BaseListDao<ReleaseGroupReason>{
@Inject
public ReleaseGroupReasonDao(Provider<EntityManager> emf) {
super(emf);
entityClass=ReleaseGroupReason.class;
}

}
19 changes: 19 additions & 0 deletions src/main/java/org/oregami/data/TitleTypeDao.java
@@ -0,0 +1,19 @@
package org.oregami.data;

import javax.persistence.EntityManager;

import org.oregami.entities.datalist.TitleType;

import com.google.inject.Inject;
import com.google.inject.Provider;

public class TitleTypeDao extends BaseListDao<TitleType>{

@Inject
public TitleTypeDao(Provider<EntityManager> emf) {
super(emf);
entityClass=TitleType.class;
}


}

0 comments on commit ab14217

Please sign in to comment.