public RefStatementRelation toRefStatementRelation(boolean isUpdate, RefStatementRelationInfo refStatementRelationInfo) throws DoesNotExistException, VersionMismatchException, InvalidParameterException {
RefStatementRelation refStatement;
if (isUpdate) {
refStatement = this.statementDao.fetch(RefStatementRelation.class, refStatementRelationInfo.getId());
if (refStatement == null) {
throw new DoesNotExistException("RefStatementRelation does not exist for id: " + refStatementRelationInfo.getId());
}
if (!String.valueOf(refStatement.getVersionNumber()).equals(refStatementRelationInfo.getMetaInfo().getVersionInd())) {
throw new VersionMismatchException("RefStatementRelation to be updated is not the current version");
}
} else {
refStatement = new RefStatementRelation();
}
BeanUtils.copyProperties(refStatementRelationInfo, refStatement, new String[]{"attributes", "metaInfo", "type", "statementId"});
this.statementDao.fetch(ObjectType.class, refStatementRelationInfo.getRefObjectTypeKey());
refStatement.setAttributes(toGenericAttributes(RefStatementRelationAttribute.class, refStatementRelationInfo.getAttributes(), refStatement, this.statementDao));
RefStatementRelationType type = this.statementDao.fetch(RefStatementRelationType.class, refStatementRelationInfo.getType());
refStatement.setRefStatementRelationType(type);
Statement statement = this.statementDao.fetch(Statement.class, refStatementRelationInfo.getStatementId());
refStatement.setStatement(statement);
return refStatement;
}