package com.example.database.dao;
import com.activeandroid.query.Delete;
import com.activeandroid.query.Select;
import com.example.database.model.ProductModel;
import com.example.entity.ProductEntity;
import java.util.ArrayList;
import java.util.List;
public class ProductDAO implements DAO<ProductEntity>
{
@Override
public long create(ProductEntity product)
{
ProductModel m = new ProductModel();
m.set(product);
return m.save();
}
@Override
public ProductEntity read(long id)
{
ProductModel m = new Select().from(ProductModel.class).where("Id=?", id).executeSingle();
return m.toEntity();
}
@Override
public ProductEntity readFirst()
{
ProductModel m = new Select().from(ProductModel.class).limit(1).executeSingle();
return m.toEntity();
}
@Override
public List<ProductEntity> readAll()
{
List<ProductModel> modelList = new Select().from(ProductModel.class).orderBy("Timestamp ASC").execute();
List<ProductEntity> entityList = new ArrayList<>();
for(ProductModel m : modelList)
{
ProductEntity e = m.toEntity();
entityList.add(e);
}
return entityList;
}
@Override
public List<ProductEntity> readAll(int limit, int offset)
{
List<ProductModel> modelList = new Select().from(ProductModel.class).limit(limit).offset(offset).orderBy("Timestamp ASC").execute();
List<ProductEntity> entityList = new ArrayList<>();
for(ProductModel m : modelList)
{
ProductEntity e = m.toEntity();
entityList.add(e);
}
return entityList;
}
@Override
public long update(ProductEntity product)
{
ProductModel m = new Select().from(ProductModel.class).where("Id=?", product.getId()).executeSingle();
m.set(product);
return m.save();
}
@Override
public void delete(long id)
{
new Delete().from(ProductModel.class).where("Id=?", id).execute();
}
@Override
public void deleteAll()
{
new Delete().from(ProductModel.class).execute();
}
}