@Override
	public void process(HttpServletRequest request,
			HttpServletResponse response, final String mobileHash,
			List<String> message) throws Exception {
		final EntityManager manager = EMF.get().createEntityManager();
		String option=message.get(0);
		if(option==null)
			{option="";}
		try {
			ChessUser user = manager.find(ChessUser.class, mobileHash);		
			List<GamesArchive> games=DB_Util.getArchivedGames(manager, user.getMobileHash(),option);
			String startIndexString=request.getParameter("startIndex");
			ListIterator<GamesArchive> gamesIterator= new ListIterator<GamesArchive>("all".equalsIgnoreCase(option)?"Game History":"Game History Against "+option,games,startIndexString==null?1:Integer.parseInt(startIndexString),"/listArchives?txtweb-message="+option+"&","") {

				@Override
				public String getRowLink(GamesArchive game) {
					
					
					
					boolean isWhite=mobileHash.equals(game.getWhite());
					String op=isWhite?game.getBlack():game.getWhite();
					ChessUser opponent = manager.find(ChessUser.class,op);
					String opponentName=TxtChessUtil.isAI_Game(game)?op:opponent.getUserName();
					
				
					String result="Not Known";
					switch(game.getResult().getStatus())
					{
					case WHITE_WINS:
					{
						result=isWhite?"Won":"Lost";
						break;
					}
					case BLACK_WINS:
					{
						result=isWhite?"Lost":"Won";
						break;
					}
					case DRAW:
					{
						result="Drawn";
						break;
					}
					}
					
					
					return "<a href='/showArchive?gameId="+game.getId()+"'>" +
							result+" Against "+opponentName+" in "+game.getMovesCount() +" Moves ("+game.getResult().getInfoString() +")"
							+"</a>";
				}
			};
			
			request.setAttribute("__listIterator",gamesIterator );
			setJspPath("/jsp/common/ListIteratorHandler.jsp");
			
			} finally {
			manager.close();
		}
	}