private ArrayList<Game> getGames(String from, String to) {
		DatastoreService datastore = DatastoreServiceFactory
				.getDatastoreService();

		Filter fromFilter = new FilterPredicate("gameId",
				FilterOperator.GREATER_THAN_OR_EQUAL, from);
		Filter toFilter = new FilterPredicate("gameId",
				FilterOperator.LESS_THAN_OR_EQUAL, to);

		Filter filter = CompositeFilterOperator.and(fromFilter, toFilter);
		Query q = new Query("Game").setFilter(filter);

		PreparedQuery pq = datastore.prepare(q);

		ArrayList<Game> list = new ArrayList<Game>();
		for (Entity gameEntity : pq.asIterable()) {
			Game gameSetting = new Game();

			String gameId = (String) gameEntity.getProperty("gameId");
			gameSetting.setGameId(gameId);
			Date gameDate = (Date) gameEntity.getProperty("gameDate");
			gameSetting.setDate(gameDate.getTime());
			int holeCount = Common.getIntProperty(gameEntity, "holeCount");
			gameSetting.setHoleCount(holeCount);
			int playerCount = Common.getIntProperty(gameEntity, "playerCount");
			gameSetting.setPlayerCount(playerCount);

			if (gameEntity.hasProperty("fieldName")) {
				gameSetting.setFieldName((String) gameEntity
						.getProperty("fieldName"));
			} else {
				gameSetting.setFieldName("");
			}
			gameSetting.setFairwayDifficulty(Common.getIntProperty(gameEntity,
					"fairwayDifficulty"));
			gameSetting.setGreenDifficulty(Common.getIntProperty(gameEntity,
					"greenDifficulty"));

			int holeFee = Common.getIntProperty(gameEntity, "holeFee");
			gameSetting.setHoleFee(holeFee);
			int extraFee = Common.getIntProperty(gameEntity, "extraFee");
			gameSetting.setExtraFee(extraFee);
			int rankingFee = Common.getIntProperty(gameEntity, "rankingFee");
			gameSetting.setRankingFee(rankingFee);

			for (int i = 1; i <= Common.MAX_PLAYER_COUNT; i++) {
				int fee = Common.getIntProperty(gameEntity, "holeFeePerRanking"
						+ i);
				gameSetting.setHoleFeePerRanking(i, fee);

				fee = Common.getIntProperty(gameEntity, "rankingFeePerRanking"
						+ i);
				gameSetting.setRankingFeePerRanking(i, fee);
			}

			int[] playerScores = new int[Common.MAX_PLAYER_COUNT];
			int[] usedHandicaps = new int[Common.MAX_PLAYER_COUNT];

			for (int i = 0; i < Common.MAX_PLAYER_COUNT; i++) {
				playerScores[i] = 0;
				usedHandicaps[i] = 0;

				String name = (String) gameEntity.getProperty("playerName" + i);
				gameSetting.setPlayerName(i, name);

				int handicap = Common
						.getIntProperty(gameEntity, "handicap" + i);
				gameSetting.setHandicap(i, handicap);

				int extraScore = Common.getIntProperty(gameEntity, "extraScore"
						+ i);
				gameSetting.setExtraScore(i, extraScore);
			}

			ArrayList<Result> results = getResults(gameId);
			resultsMap.put(gameId, results);
			for (Result result : results) {
				for (int playerId = 0; playerId < Common.MAX_PLAYER_COUNT; playerId++) {
					playerScores[playerId] += result.getScore(playerId);
					usedHandicaps[playerId] += result.getUsedHandicap(playerId);
				}
			}

			for (int i = 0; i < Common.MAX_PLAYER_COUNT; i++) {
				gameSetting.setPlayerScore(i, playerScores[i]);
				gameSetting.setUsedHandicap(i, usedHandicaps[i]);
			}

			list.add(gameSetting);
		}

		return list;
	}