The people who wrote this system thought they understood OO but really didn't. This is a system with methods hundreds of lines long, where many of the catch clauses are for Exception (in fact when I catch individual exceptions, in code reviews they tell me why write all those lines just catch Exception), a love of utility classes and static methods, etc. Whenever I suggest that a class should be responsible for some behavior directly related to itself, many times the answer is, write a utility class or a static method instead. This led to a completely idiotic database layer, instead of using a normal OO - Relational mapping tool they did the following.
select = DatabaseQueryFactory.createSelect();
\t\t\tselect.addField(DBScheme.MngObj.ENTITY_CONTAIN_LIMIT_cols.ECL_AMOUNT_LIMIT);
\t\t\t// add conditions
\t\t\t// first filter by customer ID on the containing id
\t\t\tselect.addCondition(DBScheme.MngObj.ENTITY_CONTAIN_LIMIT_cols.ECL_CONTAINING_ENTITY_TYPE_ID,
\t\t\t\t\t\t\t\tCondition.EQ, EntitiesTBP.TypesEnum.CUSTOMER);
WhereClause filter = new WhereClauseImpl();
\t\tfilter.add(new ConditionImpl(DBScheme.MngObj.CUSTOMERS_cols.C_CUST_ID, Condition.EQ, customerID));
...
To say I am a bit frustrated is an understatement.