diff --git a/src/java/dao/DaoAdmin.java b/src/java/dao/DaoAdmin.java new file mode 100644 index 0000000..e4b88d7 --- /dev/null +++ b/src/java/dao/DaoAdmin.java @@ -0,0 +1,125 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package dao; + +import model.Admin; +import imp.IAction; +import java.sql.ResultSet; +import java.util.List; +import org.hibernate.Session; +import util.HibernateMovie; +import imp.ICheckLogin; +import imp.ICheckName; +import imp.ICheckPassword; +import imp.IListName; +import java.util.Date; + +/** + * + * @author gaone + */ +public class DaoAdmin implements ICheckLogin, IAction, IListName, ICheckName { + + private Session session; + + public DaoAdmin(Session session) { + this.session = session; + } + + @Override + public Admin checkLogin(String username, String password) { + List admins = null; + session.beginTransaction(); + admins = session.createQuery("from Admin where username=:username").setParameter("username", username).list(); + session.getTransaction().commit(); + if (admins.size() > 0 && admins.get(0).getPassword().equals(password)) { + return admins.get(0); + } + return null; + } + + @Override + public List getAll() { + session.beginTransaction(); + List admins = session.createQuery("from Admin").list(); + session.getTransaction().commit(); + return admins; + } + + @Override + public Admin findById(int id) { + session.beginTransaction(); + Admin admin = (Admin) session.get(Admin.class, id); + session.getTransaction().commit(); + return admin; + } + + @Override + public void delete(Admin object) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @Override + public void update(Admin object) { + session.beginTransaction(); + session.update(object); + session.getTransaction().commit(); + session.close(); + } + + public void update(int id, String fullName, String password, Date birthday, String gmail, Integer sdt) { + session.beginTransaction(); + Admin admin = (Admin) session.get(Admin.class, id); + admin.setFullName(fullName); + if(password.length()>0){ + admin.setPassword(password); + } + admin.setBirthday(birthday); + admin.setGmail(gmail); + admin.setSdt(sdt); + session.getTransaction().commit(); + session.close(); + } + + @Override + public void add(Admin object) { + session.beginTransaction(); + session.save(object); + session.getTransaction().commit(); + session.close(); + } + + @Override + public List getAllUserName() { + session.beginTransaction(); + List listUserNamse = session.createQuery("select username from Admin").list(); + session.getTransaction().commit(); + return listUserNamse; + } +// public static void main(String[] args) { +// List admins=new DaoAdmin(HibernateMovie.openSession()).getAllUserName(); +// System.out.println(admins.toString()); +// } + + @Override + public boolean checkUserName(String username) { + List names = null; + session.beginTransaction(); + names = session.createQuery("select username from Admin where username=:username").setParameter("username", username).list(); + session.getTransaction().commit(); + if (names.size() == 0) { + return false; + } + return true; + } + public int countAdmin() { + session.beginTransaction(); + List countList = session.createSQLQuery("SELECT COUNT(id_admin) FROM `admin`").list(); + session.getTransaction().commit(); + int count = Integer.parseInt(countList.get(0).toString()); + return count; + } +} diff --git a/src/java/dao/DaoCategory.java b/src/java/dao/DaoCategory.java new file mode 100644 index 0000000..7ca8865 --- /dev/null +++ b/src/java/dao/DaoCategory.java @@ -0,0 +1,67 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package dao; + +import model.Category; +import imp.IAction; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import org.hibernate.Session; +import util.HibernateMovie; + +/** + * + * @author gaone + */ +public class DaoCategory implements IAction { + + private Session session; + + public DaoCategory(Session session) { + this.session = session; + } + + @Override + public List getAll() { + session.beginTransaction(); + List list = session.createQuery("from Category").list(); + session.getTransaction().commit(); + return list; + } + + @Override + public Category findById(int id) { + session.beginTransaction(); + Category category = (Category) session.get(Category.class, id); + session.getTransaction().commit(); + return category; + } + + @Override + public void delete(Category object) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @Override + public void update(Category object) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @Override + public void add(Category object) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + public Set getAllByListId(char[] lsitIdCategory) { + Set categorys = new HashSet(0); + for (int i = 0; i < lsitIdCategory.length; i++) { + int id=Integer.parseInt(String.valueOf(lsitIdCategory[i])); + categorys.add(findById(id)); + } + return categorys; + } +} diff --git a/src/java/dao/DaoCategoryMovie.java b/src/java/dao/DaoCategoryMovie.java new file mode 100644 index 0000000..2a45bcc --- /dev/null +++ b/src/java/dao/DaoCategoryMovie.java @@ -0,0 +1,52 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package dao; + +import imp.IAction; +import java.util.List; +import model.CategoryMoive; +import org.hibernate.Session; + +/** + * + * @author gaone + */ +public class DaoCategoryMovie implements IAction { + + private Session session; + + public DaoCategoryMovie(Session session) { + this.session = session; + } + + @Override + public List getAll() { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @Override + public CategoryMoive findById(int id) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @Override + public void delete(CategoryMoive object) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @Override + public void update(CategoryMoive object) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @Override + public void add(CategoryMoive object) { + session.beginTransaction(); + session.save(object); + session.getTransaction().commit(); + } + +} diff --git a/src/java/dao/DaoFilmType.java b/src/java/dao/DaoFilmType.java new file mode 100644 index 0000000..6fccf8f --- /dev/null +++ b/src/java/dao/DaoFilmType.java @@ -0,0 +1,55 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package dao; + +import model.Filmtype; +import imp.IAction; +import java.util.List; +import org.hibernate.Session; + +/** + * + * @author gaone + */ +public class DaoFilmType implements IAction{ + private Session session; + + public DaoFilmType(Session session) { + this.session = session; + } + + + @Override + public List getAll() { + session.beginTransaction(); + List list=session.createQuery("from Filmtype").list(); + session.getTransaction().commit(); + return list; + } + + @Override + public Filmtype findById(int id) { + session.beginTransaction(); + Filmtype filmType=(Filmtype) session.get(Filmtype.class, id); + session.getTransaction().commit(); + return filmType; + } + + @Override + public void delete(Filmtype object) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @Override + public void update(Filmtype object) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @Override + public void add(Filmtype object) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } +} diff --git a/src/java/dao/DaoMovie.java b/src/java/dao/DaoMovie.java new file mode 100644 index 0000000..c43b6a6 --- /dev/null +++ b/src/java/dao/DaoMovie.java @@ -0,0 +1,120 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package dao; + +import imp.IAction; +import java.util.ArrayList; +import model.Movie; +import java.util.List; +import model.Filmtype; +import org.apache.commons.lang3.StringUtils; +import org.hibernate.Session; +import org.hibernate.type.Type; +import util.HibernateMovie; + +/** + * + * @author gaone + */ +public class DaoMovie implements IAction { + + private Session session; + + public DaoMovie(Session session) { + this.session = session; + } + + @Override + public List getAll() { + session.beginTransaction(); + List movies = session.createQuery("from Movie").list(); + session.getTransaction().commit(); + return movies; + } + + @Override + public Movie findById(int id) { + session.beginTransaction(); + Movie movie = (Movie) session.get(Movie.class, id); + session.getTransaction().commit(); + return movie; + } + + public List findByName(String str, boolean flag) { + if (flag) { + session.beginTransaction(); + List movies = session.createQuery("from Movie where nameMovie='" + str + "'").list(); + session.getTransaction().commit(); + return movies; + } else { + session.beginTransaction(); + List movies = session.createQuery("from Movie where nameMovie LIKE '%" + str + "%'").list(); + session.getTransaction().commit(); + return movies; + } + } + + @Override + public void delete(Movie object) { + session.beginTransaction(); + session.delete(object); + session.getTransaction().commit(); + session.close(); + } + public void delete(int id) { + session.beginTransaction(); + session.createSQLQuery("DELETE FROM `movie` WHERE `movie`.`id_movie` = '"+id+"'"); + session.getTransaction().commit(); + session.close(); + } + + @Override + public void update(Movie object) { + session.beginTransaction(); + session.update(object); + session.getTransaction().commit(); + session.close(); + } + + @Override + public void add(Movie object) { + session.beginTransaction(); + session.save(object); + session.getTransaction().commit(); + session.close(); + } + + public List seachMovie(String str) { + if (StringUtils.isNumeric(str)) { + List movieList = new ArrayList(); + int id = Integer.parseInt(str); + Movie movie = findById(id); + if (movie != null) { + movieList.add(movie); + } + return movieList; + } else { + List movieList = findByName(str, false); + return movieList; + } + } + + public int countMovie() { + session.beginTransaction(); + List countList = session.createSQLQuery("SELECT COUNT(id_movie) FROM `movie`").list(); + session.getTransaction().commit(); + int count = Integer.parseInt(countList.get(0).toString()); + return count; + } + + public int countNewMovieAdd() { + session.beginTransaction(); + List countList = session.createSQLQuery("SELECT COUNT(dateAdd) FROM `movie` WHERE YEAR(dateAdd)=YEAR(CURRENT_DATE()) AND MONTH(dateAdd)=MONTH(CURRENT_DATE())").list(); + session.getTransaction().commit(); + int count = Integer.parseInt(countList.get(0).toString()); + return count; + } +} diff --git a/src/java/dao/DaoMovieAdmin.java b/src/java/dao/DaoMovieAdmin.java new file mode 100644 index 0000000..a857eb1 --- /dev/null +++ b/src/java/dao/DaoMovieAdmin.java @@ -0,0 +1,61 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package dao; + +import model.MovieAdmin; +import imp.IAction; +import java.util.List; +import org.hibernate.Session; +import util.HibernateMovie; + +/** + * + * @author gaone + */ +public class DaoMovieAdmin implements IAction { + private Session session; + + public DaoMovieAdmin(Session session) { + this.session = session; + } + @Override + public List getAll() { + session.beginTransaction(); + Listlist= session.createQuery("from MovieAdmin").list(); + session.getTransaction().commit(); + return list; + } + + @Override + public MovieAdmin findById(int id) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @Override + public void delete(MovieAdmin object) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @Override + public void update(MovieAdmin object) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @Override + public void add(MovieAdmin object) { + session.beginTransaction(); + session.save(object); + session.getTransaction().commit(); + session.close(); + } + +// public static void main(String[] args) { +// Listlist=new DaoMovieAdmin(HibernateMovie.openSession()).getAll(); +// System.out.println(list.toString()); +// +// } + +} diff --git a/src/java/imp/IAction.java b/src/java/imp/IAction.java new file mode 100644 index 0000000..fae228a --- /dev/null +++ b/src/java/imp/IAction.java @@ -0,0 +1,21 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package imp; + +import java.util.List; + + +/** + * + * @author gaone + */ +public interface IAction { + List getAll(); + T findById(int id); + void delete(T object); + void update(T object); + void add(T object); +} diff --git a/src/java/imp/ICheckLogin.java b/src/java/imp/ICheckLogin.java new file mode 100644 index 0000000..4aef136 --- /dev/null +++ b/src/java/imp/ICheckLogin.java @@ -0,0 +1,14 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package imp; + +/** + * + * @author gaone + */ +public interface ICheckLogin { + T checkLogin(String username,String password); +} diff --git a/src/java/imp/ICheckName.java b/src/java/imp/ICheckName.java new file mode 100644 index 0000000..280ceb7 --- /dev/null +++ b/src/java/imp/ICheckName.java @@ -0,0 +1,14 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package imp; + +/** + * + * @author gaone + */ +public interface ICheckName { + boolean checkUserName(String username); +} diff --git a/src/java/imp/ICheckPassword.java b/src/java/imp/ICheckPassword.java new file mode 100644 index 0000000..697aa79 --- /dev/null +++ b/src/java/imp/ICheckPassword.java @@ -0,0 +1,14 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package imp; + +/** + * + * @author gaone + */ +public interface ICheckPassword { + boolean checkPassword(int id,String password); +} diff --git a/src/java/imp/IListName.java b/src/java/imp/IListName.java new file mode 100644 index 0000000..4e31560 --- /dev/null +++ b/src/java/imp/IListName.java @@ -0,0 +1,16 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package imp; + +import java.util.List; + +/** + * + * @author gaone + */ +public interface IListName { + ListgetAllUserName(); +} diff --git a/src/java/service/ServiceAdmin.java b/src/java/service/ServiceAdmin.java new file mode 100644 index 0000000..976d7f6 --- /dev/null +++ b/src/java/service/ServiceAdmin.java @@ -0,0 +1,87 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package service; + +import dao.DaoAdmin; +import model.Admin; +import imp.IAction; +import util.HibernateMovie; +import imp.ICheckLogin; +import imp.ICheckName; +import imp.ICheckPassword; +import java.util.List; +import imp.IListName; +import java.util.Date; + +/** + * + * @author gaone + */ +public class ServiceAdmin implements ICheckLogin, IAction, IListName, ICheckName, ICheckPassword { + + private DaoAdmin daoAdmin; + + public ServiceAdmin() { + daoAdmin = new DaoAdmin(HibernateMovie.openSession()); + } + + @Override + public Admin checkLogin(String username, String password) { + return daoAdmin.checkLogin(username, password); + } + + @Override + public List getAll() { + return daoAdmin.getAll(); + } + + @Override + public Admin findById(int id) { + return daoAdmin.findById(id); + } + + @Override + public void delete(Admin object) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @Override + public void update(Admin object) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + public void update(int id, String fullName, String password, Date birthday, String gmail, Integer sdt) { + daoAdmin.update(id, fullName, password, birthday, gmail, sdt); + } + + @Override + public void add(Admin object) { + daoAdmin.add(object); + } + + @Override + public List getAllUserName() { + return daoAdmin.getAllUserName(); + } + + @Override + public boolean checkUserName(String username) { + return daoAdmin.checkUserName(username); + } + + @Override + public boolean checkPassword(int id, String password) { + Admin admin = findById(id); + if (admin.getPassword().equals(password)) { + return true; + } + return false; + } + public int countAdmin() { + + return daoAdmin.countAdmin(); + } +} diff --git a/src/java/service/ServiceCategory.java b/src/java/service/ServiceCategory.java new file mode 100644 index 0000000..d5aad97 --- /dev/null +++ b/src/java/service/ServiceCategory.java @@ -0,0 +1,57 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package service; + +import dao.DaoCategory; +import model.Category; +import imp.IAction; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import util.HibernateMovie; + +/** + * + * @author gaone + */ +public class ServiceCategory implements IAction{ + private DaoCategory daoCategory; + + public ServiceCategory() { + daoCategory=new DaoCategory(HibernateMovie.openSession()); + } + + + @Override + public List getAll() { + return daoCategory.getAll(); + } + + @Override + public Category findById(int id) { + return daoCategory.findById(id); + } + + @Override + public void delete(Category object) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @Override + public void update(Category object) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @Override + public void add(Category object) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + public Set getAllByListId(char[] lsitIdCategory) { + return daoCategory.getAllByListId(lsitIdCategory); + } + +} diff --git a/src/java/service/ServiceCategoryMovie.java b/src/java/service/ServiceCategoryMovie.java new file mode 100644 index 0000000..e107e88 --- /dev/null +++ b/src/java/service/ServiceCategoryMovie.java @@ -0,0 +1,51 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package service; + +import dao.DaoCategoryMovie; +import imp.IAction; +import java.util.List; +import model.CategoryMoive; +import util.HibernateMovie; + +/** + * + * @author gaone + */ +public class ServiceCategoryMovie implements IAction{ + + private DaoCategoryMovie daoCategoryMovie; + + public ServiceCategoryMovie() { + daoCategoryMovie=new DaoCategoryMovie(HibernateMovie.openSession()); + } + + @Override + public List getAll() { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @Override + public CategoryMoive findById(int id) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @Override + public void delete(CategoryMoive object) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @Override + public void update(CategoryMoive object) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @Override + public void add(CategoryMoive object) { + daoCategoryMovie.add(object); + } + +} diff --git a/src/java/service/ServiceFilmType.java b/src/java/service/ServiceFilmType.java new file mode 100644 index 0000000..89c3998 --- /dev/null +++ b/src/java/service/ServiceFilmType.java @@ -0,0 +1,51 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package service; + +import dao.DaoFilmType; +import model.Filmtype; +import imp.IAction; +import java.util.List; +import util.HibernateMovie; + +/** + * + * @author gaone + */ +public class ServiceFilmType implements IAction { + private DaoFilmType daoFilmType; + + public ServiceFilmType() { + this.daoFilmType=new DaoFilmType(HibernateMovie.openSession()); + } + + + @Override + public List getAll() { + return daoFilmType.getAll(); + } + + @Override + public Filmtype findById(int id) { + return daoFilmType.findById(id); + } + + @Override + public void delete(Filmtype object) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @Override + public void update(Filmtype object) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @Override + public void add(Filmtype object) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + +} diff --git a/src/java/service/ServiceMovieAdmin.java b/src/java/service/ServiceMovieAdmin.java new file mode 100644 index 0000000..84acad5 --- /dev/null +++ b/src/java/service/ServiceMovieAdmin.java @@ -0,0 +1,52 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package service; + +import dao.DaoMovie; +import dao.DaoMovieAdmin; +import model.MovieAdmin; +import imp.IAction; +import java.util.List; +import util.HibernateMovie; + +/** + * + * @author gaone + */ +public class ServiceMovieAdmin implements IAction { + private DaoMovieAdmin daoMovieAdmin; + + public ServiceMovieAdmin() { + daoMovieAdmin=new DaoMovieAdmin(HibernateMovie.openSession()); + } + + + @Override + public List getAll() { + return daoMovieAdmin.getAll(); + } + + @Override + public MovieAdmin findById(int id) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @Override + public void delete(MovieAdmin object) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @Override + public void update(MovieAdmin object) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @Override + public void add(MovieAdmin object) { + daoMovieAdmin.add(object); + } + +} diff --git a/src/java/service/ServicelMovie.java b/src/java/service/ServicelMovie.java new file mode 100644 index 0000000..73c8226 --- /dev/null +++ b/src/java/service/ServicelMovie.java @@ -0,0 +1,73 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package service; + +import dao.DaoMovie; +import model.Movie; +import imp.IAction; +import java.util.ArrayList; +import java.util.List; +import org.hibernate.Session; +import util.HibernateMovie; + +/** + * + * @author gaone + */ +public class ServicelMovie implements IAction { + + private DaoMovie daoMovie; + + public ServicelMovie() { + daoMovie = new DaoMovie(HibernateMovie.openSession()); + } + + @Override + public List getAll() { + return daoMovie.getAll(); + } + + @Override + public Movie findById(int id) { + return daoMovie.findById(id); + } + + @Override + public void delete(Movie object) { + daoMovie.delete(object); + } + public void delete(int id) { + daoMovie.delete(id); + } + + @Override + public void update(Movie object) { + daoMovie.update(object); + } + + @Override + public void add(Movie object) { + daoMovie.add(object); + } + + public List findByName(String str, boolean flag) { + return daoMovie.findByName(str, flag); + } + + public List seachMovie(String str) { + return daoMovie.seachMovie(str); + } + + public int countMovie() { + return daoMovie.countMovie(); + } + + public int countNewMovieAdd() { + + return daoMovie.countNewMovieAdd(); + } + +}