/*
* Copyright 2013 ArcBees Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package com.gwtplatform.carstore.server.dao;
import java.util.ArrayList;
import java.util.List;
import javax.inject.Inject;
import com.googlecode.objectify.Key;
import com.googlecode.objectify.cmd.Query;
import com.gwtplatform.carstore.server.dao.domain.Car;
import com.gwtplatform.carstore.server.dao.domain.Rating;
import com.gwtplatform.carstore.shared.dto.ManufacturerRatingDto;
public class CarDao extends BaseDao<Car> {
private final CarPropertiesDao carPropertiesDao;
private final RatingDao ratingDao;
@Inject
public CarDao(
CarPropertiesDao carPropertiesDao,
RatingDao ratingDao) {
super(Car.class);
this.carPropertiesDao = carPropertiesDao;
this.ratingDao = ratingDao;
}
// TODO overwrite other delete methods
// TODO test that associated ratings and carProperties get deleted
@Override
public void delete(Long id) {
Car car = get(id);
carPropertiesDao.delete(car.getCarProperties());
Key<Car> carKey = Key.create(Car.class, id);
Query<Rating> ratings = ratingDao.query().filter("car", carKey);
ratingDao.delete(ratings.list());
super.delete(id);
}
public List<ManufacturerRatingDto> getAverageCarRatingByManufacturer() {
// TODO: Not implemented yet
return new ArrayList<>();
}
}