EPLib

It is a personal library which I use to stock standard solutions knowledge to recurrent problems. Thus, it is structured in several modules.

At the beginning, I coded it in 100% STL C++ but I soon moved to JAVA as the STL did not seem to be really standard. Indeed it could not compile using VisualC++ as it did using GCC.

Modules

Utils

Utilities classes: command line interface utilities, logs analysis tools heavily used in JUnit tests, and various recurrently used static functions.

State-Machine

A library used to very quickly implement a state-machine (see UML state machine diagram). Additionally it generates a GraphViz diagram picture, and it is designed to use interfaces and enumerated types for more rigorous code.

Client-Server

Network library built on top of JAVA standard Socket classes. Designed to provide a higher level API it also provides RPC API to make communication based on common interfaces.

GameServer

On top of the previous library, this one provide a standard design for networking games. A game is seen as a 3 states machine: Game creation, when the game setting can be changed while waiting for players; Game running; And Game in pause when a player is disconnected.
GameServer implements the basic mechanisms of such a game so the programmer only has to code the business part.
The game coding is reduced to the declaration and implementation of common interfaces (the game protocol).

I use this library on the Space-Empire-Pulsar project.

ORM

Object Relational Mapping aims to provide a common interface whatever the database that is used. It produce standard classes to drive the wanted database with a database-independent API.
Currently, it encapsulate the SQLite4Java and HSQLDB libraries. The ORM class generation supports inheritance and polymorphism of the database tables.

I use this library on the Space-Empire-Pulsar project.

YAML

It is more a simple encapsulation of a third-party library (SnakeYAML) raver than personal code. The goal is to work with YAML format files. The purpose of encapsulating a third-party library rather than simply using it is to let me free to change my mind in the future and take advantage of another third-part library without changing any line of code in my depending projects.