def __addOrModifyGroup(self, buildingName, description, crossRoomsValidation, crossRoomsValidationCategories, groupId = None):


		if type(crossRoomsValidation) == int:
			crossRoomsValidation = bool(crossRoomsValidation)
		elif type(crossRoomsValidation) == str or type(crossRoomsValidation) == unicode:

			if str(crossRoomsValidation.upper()) == "TRUE" or str(crossRoomsValidation.upper()) == "1":
				crossRoomsValidation = True
			else:
				crossRoomsValidation = False

		elif type(crossRoomsValidation) != bool:
			raise IncorrectInputDataTypeError("crossRoomsValidation must be a booelan value (True,False) or integer value (1,0)")


		if not crossRoomsValidation:
			crossRoomsValidationCategories = []
		else:
			crossRoomsValidationCategories = json.loads(crossRoomsValidationCategories)


		if crossRoomsValidation and len(crossRoomsValidationCategories) == 0:
			raise MissingInputDataError("Selecting crossRoomsValidation you need to insert at least one rule category in crossRoomsValidationCategories")

		from app.backend.model.group import Group
		group = Group(id = groupId, buildingName = buildingName, description = description, crossRoomsValidation = crossRoomsValidation, crossRoomsValidationCategories = crossRoomsValidationCategories)

		building = Building(buildingName = buildingName)
		building.retrieve()

		return building.addGroup(group).getDict()