esoe
2 months ago
32 changed files with 1678 additions and 181 deletions
@ -0,0 +1,27 @@ |
|||||||
|
package ru.molokoin.resourceserviceapi.enums; |
||||||
|
|
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
public enum Base { |
||||||
|
|
||||||
|
TEACHERS (Teachers.getTitles()), |
||||||
|
PROGRAMS (Programs.getTitles()), |
||||||
|
// STUDENTS (Students.getTitles()),
|
||||||
|
ORGANIZATIONS (Organizations.getTitles()), |
||||||
|
// EDUCATIONS (Educations.getTitles()),
|
||||||
|
BUILDINGS (Buildings.getTitles()), |
||||||
|
CRETAREAS (Cretareas.getTitles()); |
||||||
|
// COURSES (Courses.getTitles()),
|
||||||
|
// POSTS (Posts.getTitles()),
|
||||||
|
// STORES (Stores.getTitles());
|
||||||
|
|
||||||
|
|
||||||
|
private List<String> titles; |
||||||
|
|
||||||
|
Base(List<String> titles) { |
||||||
|
this.titles = titles; |
||||||
|
} |
||||||
|
public boolean contains(String title) { |
||||||
|
return titles.contains(title); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,30 @@ |
|||||||
|
package ru.molokoin.resourceserviceapi.enums; |
||||||
|
|
||||||
|
import java.util.Arrays; |
||||||
|
import java.util.List; |
||||||
|
import java.util.stream.Collectors; |
||||||
|
|
||||||
|
public enum Buildings { |
||||||
|
ID("id"), |
||||||
|
CODE_FULL("codeFull"), |
||||||
|
CODE_SHORT("codeShort"), |
||||||
|
NAME_FULL("nameFull"), |
||||||
|
NAME_SHORT("nameShort"); |
||||||
|
|
||||||
|
private String column; |
||||||
|
|
||||||
|
Buildings(String column) { |
||||||
|
this.column = column; |
||||||
|
} |
||||||
|
|
||||||
|
public String column() { |
||||||
|
return column; |
||||||
|
} |
||||||
|
|
||||||
|
public static List<String> getTitles() { |
||||||
|
return Arrays.stream(Buildings.values()) |
||||||
|
.map(Buildings::column) |
||||||
|
.collect(Collectors.toList()); |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,27 @@ |
|||||||
|
package ru.molokoin.resourceserviceapi.enums; |
||||||
|
|
||||||
|
import java.util.Arrays; |
||||||
|
import java.util.List; |
||||||
|
import java.util.stream.Collectors; |
||||||
|
|
||||||
|
public enum Cretareas { |
||||||
|
ID("id"), |
||||||
|
NAME("name"), |
||||||
|
NAME_SHORT("nameShort"); |
||||||
|
|
||||||
|
private String column; |
||||||
|
|
||||||
|
Cretareas(String column) { |
||||||
|
this.column = column; |
||||||
|
} |
||||||
|
public static List<String> getTitles() { |
||||||
|
return Arrays.stream(Cretareas.values()) |
||||||
|
.map(Cretareas::column) |
||||||
|
.collect(Collectors.toList()); |
||||||
|
} |
||||||
|
|
||||||
|
public String column() { |
||||||
|
return column; |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,32 @@ |
|||||||
|
package ru.molokoin.resourceserviceapi.enums; |
||||||
|
|
||||||
|
import java.util.Arrays; |
||||||
|
import java.util.List; |
||||||
|
import java.util.stream.Collectors; |
||||||
|
|
||||||
|
public enum Organizations { |
||||||
|
ID("id"), |
||||||
|
OWNERSHIP("ownership"), |
||||||
|
NAME_SHORT("nameShort"), |
||||||
|
NAME_FULL("nameFull"), |
||||||
|
TYPE("type"), |
||||||
|
INN("inn"); |
||||||
|
|
||||||
|
private String title; |
||||||
|
Organizations(String title) { |
||||||
|
this.title = title; |
||||||
|
} |
||||||
|
public String getTitle() { |
||||||
|
return title; |
||||||
|
} |
||||||
|
public static List<String> getTitles() { |
||||||
|
return Arrays.stream(Organizations.values()) |
||||||
|
.map(Organizations::column) |
||||||
|
.collect(Collectors.toList()); |
||||||
|
} |
||||||
|
|
||||||
|
public String column() { |
||||||
|
return title; |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,30 @@ |
|||||||
|
package ru.molokoin.resourceserviceapi.enums; |
||||||
|
|
||||||
|
import java.util.Arrays; |
||||||
|
import java.util.List; |
||||||
|
import java.util.stream.Collectors; |
||||||
|
|
||||||
|
public enum Programs { |
||||||
|
ID("id"), |
||||||
|
LENGHT("lenght"), |
||||||
|
NAME("name"), |
||||||
|
PRICE("price"), |
||||||
|
STUDY_DIRECTION("studyDirection"), |
||||||
|
CRETAREA("cretarea"); |
||||||
|
|
||||||
|
private String column; |
||||||
|
|
||||||
|
Programs(String column) { |
||||||
|
this.column = column; |
||||||
|
} |
||||||
|
public String column() { |
||||||
|
return column; |
||||||
|
} |
||||||
|
|
||||||
|
public static List<String> getTitles() { |
||||||
|
return Arrays.stream(Programs.values()) |
||||||
|
.map(Programs::column) |
||||||
|
.collect(Collectors.toList()); |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,30 @@ |
|||||||
|
package ru.molokoin.resourceserviceapi.enums; |
||||||
|
|
||||||
|
import java.util.Arrays; |
||||||
|
import java.util.List; |
||||||
|
import java.util.stream.Collectors; |
||||||
|
|
||||||
|
public enum Teachers { |
||||||
|
ID("id"), |
||||||
|
SECOND_NAME("secondName"), |
||||||
|
FIRST_NAME("firstName"), |
||||||
|
LAST_NAME("lastName"), |
||||||
|
EMPLOYEE_ID("employeeId"), |
||||||
|
SNILS("snils"), |
||||||
|
FIO("fio"); |
||||||
|
|
||||||
|
private String column; |
||||||
|
|
||||||
|
Teachers(String column) { |
||||||
|
this.column = column; |
||||||
|
} |
||||||
|
public static List<String> getTitles() { |
||||||
|
return Arrays.stream(Teachers.values()) |
||||||
|
.map(Teachers::column) |
||||||
|
.collect(Collectors.toList()); |
||||||
|
} |
||||||
|
|
||||||
|
public String column() { |
||||||
|
return column; |
||||||
|
} |
||||||
|
} |
@ -1,15 +0,0 @@ |
|||||||
package ru.molokoin.resourceserviceapi.repositories; |
|
||||||
|
|
||||||
import java.util.List; |
|
||||||
|
|
||||||
import org.springframework.data.repository.ListCrudRepository; |
|
||||||
import org.springframework.stereotype.Repository; |
|
||||||
|
|
||||||
|
|
||||||
import ru.molokoin.resourceserviceapi.entities.Organization; |
|
||||||
|
|
||||||
@Repository |
|
||||||
public interface OrganizationFace extends ListCrudRepository<Organization, Long>{ |
|
||||||
List<Organization> findAll(); |
|
||||||
Organization findOrganizationById(long id); |
|
||||||
} |
|
@ -0,0 +1,23 @@ |
|||||||
|
package ru.molokoin.resourceserviceapi.repositories; |
||||||
|
|
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
import org.springframework.data.domain.Page; |
||||||
|
import org.springframework.data.domain.PageRequest; |
||||||
|
import org.springframework.data.jpa.repository.JpaRepository; |
||||||
|
import org.springframework.stereotype.Repository; |
||||||
|
|
||||||
|
import ru.molokoin.resourceserviceapi.entities.Program; |
||||||
|
import ru.molokoin.resourceserviceapi.entities.ProgramCretarea; |
||||||
|
|
||||||
|
@Repository |
||||||
|
public interface ProgramRepository extends JpaRepository<Program, Long>{ |
||||||
|
List<Program> findAll(); |
||||||
|
Program findById(long id); |
||||||
|
Page<Program> findById(PageRequest of, Long id); |
||||||
|
Page<Program> findByName(PageRequest of, String name); |
||||||
|
Page<Program> findByLenght(PageRequest of, Integer lenght); |
||||||
|
Page<Program> findByStudyDirection(PageRequest of, String studyDirection); |
||||||
|
Page<Program> findByPrice(PageRequest of, Integer price); |
||||||
|
Page<Program> findByCretarea(PageRequest of, ProgramCretarea pc); |
||||||
|
} |
@ -1,12 +0,0 @@ |
|||||||
package ru.molokoin.resourceserviceapi.repositories; |
|
||||||
|
|
||||||
import java.util.List; |
|
||||||
|
|
||||||
import org.springframework.data.repository.ListCrudRepository; |
|
||||||
|
|
||||||
import ru.molokoin.resourceserviceapi.entities.Program; |
|
||||||
|
|
||||||
public interface ProgramRepositoryFace extends ListCrudRepository<Program, Long>{ |
|
||||||
List<Program> findAll(); |
|
||||||
Program findProgramById(long id); |
|
||||||
} |
|
@ -0,0 +1,35 @@ |
|||||||
|
package ru.molokoin.resourceserviceapi.repositories; |
||||||
|
|
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
import org.springframework.data.domain.Page; |
||||||
|
import org.springframework.data.domain.PageRequest; |
||||||
|
import org.springframework.data.jpa.repository.JpaRepository; |
||||||
|
import org.springframework.stereotype.Repository; |
||||||
|
|
||||||
|
import ru.molokoin.resourceserviceapi.entities.Teacher; |
||||||
|
|
||||||
|
@Repository |
||||||
|
public interface TeacherRepository extends JpaRepository<Teacher, Long>{ |
||||||
|
List<Teacher> findAll(); |
||||||
|
Teacher findById(long id); |
||||||
|
Boolean existsById(long id); |
||||||
|
List <Teacher> findBySecondNameAndFirstNameAndLastName(String firstName, String secondName, String lastName); |
||||||
|
Boolean existsBySecondNameAndFirstNameAndLastName(String secondName, String firstName, String lastName); |
||||||
|
List<Teacher> findBySecondName(String secondName); |
||||||
|
Boolean existsBySecondName(String secondName); |
||||||
|
List<Teacher> findByEmployeeId(String employeeId); |
||||||
|
Boolean existsByEmployeeId(String employeeId); |
||||||
|
List<Teacher> findBySnils(String snils); |
||||||
|
Boolean existsBySnils(String snils); |
||||||
|
// boolean existsByFIO(String secondName, String firstName, String lastName);
|
||||||
|
Page<Teacher> findById(PageRequest of, long id); |
||||||
|
Page<Teacher> findByIdAndSecondNameAndFirstNameAndLastNameAndEmployeeIdAndSnils(PageRequest of, long id, String secondName, |
||||||
|
String firstName, String lastName, String employeeId, String snils, String fio); |
||||||
|
Page<Teacher> findBySnils(PageRequest of, String snils); |
||||||
|
Page<Teacher> findByEmployeeId(PageRequest of, String employeeId); |
||||||
|
Page<Teacher> findBySecondNameAndFirstNameAndLastName(PageRequest of, String secondNameOf, String firstNameOf, |
||||||
|
String lastNameOf); |
||||||
|
Page<Teacher> findBySecondName(PageRequest of, String secondName); |
||||||
|
Page<Teacher> findBySecondNameAndFirstName(PageRequest of, String secondName, String firstName); |
||||||
|
} |
@ -1,14 +0,0 @@ |
|||||||
package ru.molokoin.resourceserviceapi.repositories; |
|
||||||
|
|
||||||
import java.util.List; |
|
||||||
|
|
||||||
import org.springframework.data.repository.ListCrudRepository; |
|
||||||
import org.springframework.stereotype.Repository; |
|
||||||
|
|
||||||
import ru.molokoin.resourceserviceapi.entities.Teacher; |
|
||||||
|
|
||||||
@Repository |
|
||||||
public interface TeachersRepositoryFace extends ListCrudRepository<Teacher, Long>{ |
|
||||||
List<Teacher> findAll(); |
|
||||||
Teacher findTeacherById(long id); |
|
||||||
} |
|
@ -0,0 +1,128 @@ |
|||||||
|
package ru.molokoin.resourceserviceapi.services; |
||||||
|
|
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
import org.springframework.data.domain.Page; |
||||||
|
import org.springframework.data.domain.PageRequest; |
||||||
|
import org.springframework.data.domain.Pageable; |
||||||
|
import org.springframework.stereotype.Service; |
||||||
|
|
||||||
|
import ru.molokoin.resourceserviceapi.entities.Organization; |
||||||
|
import ru.molokoin.resourceserviceapi.repositories.OrganizationRepository; |
||||||
|
|
||||||
|
@Service |
||||||
|
public class OrganizationService { |
||||||
|
private final OrganizationRepository repo; |
||||||
|
|
||||||
|
public OrganizationService(OrganizationRepository repo) { |
||||||
|
this.repo = repo; |
||||||
|
} |
||||||
|
|
||||||
|
public List<Organization> findAll() { |
||||||
|
return repo.findAll(); |
||||||
|
} |
||||||
|
|
||||||
|
public Organization findById(long id) { |
||||||
|
return repo.findById(id); |
||||||
|
} |
||||||
|
|
||||||
|
public Boolean existsById(long id) { |
||||||
|
return repo.existsById(id); |
||||||
|
} |
||||||
|
|
||||||
|
public List<Organization> findByType(String type) { |
||||||
|
return repo.findByType(type); |
||||||
|
} |
||||||
|
|
||||||
|
public List<Organization> findByOwnership(String ownership) { |
||||||
|
return repo.findByOwnership(ownership); |
||||||
|
} |
||||||
|
|
||||||
|
public Organization findByInn(String inn) { |
||||||
|
return repo.findByInn(inn); |
||||||
|
} |
||||||
|
|
||||||
|
public Boolean existsByInn(String inn) { |
||||||
|
return repo.existsByInn(inn); |
||||||
|
} |
||||||
|
|
||||||
|
public Boolean existsByType(String type) { |
||||||
|
return repo.existsByType(type); |
||||||
|
} |
||||||
|
|
||||||
|
public Boolean existsByOwnership(String ownership) { |
||||||
|
return repo.existsByOwnership(ownership); |
||||||
|
} |
||||||
|
|
||||||
|
public Boolean existsByNameShort(String nameShort) { |
||||||
|
return repo.existsByNameShort(nameShort); |
||||||
|
} |
||||||
|
|
||||||
|
public Boolean existsByNameFull(String nameFull) { |
||||||
|
return repo.existsByNameFull(nameFull); |
||||||
|
} |
||||||
|
|
||||||
|
public void save(Organization organization) { |
||||||
|
repo.save(organization); |
||||||
|
} |
||||||
|
|
||||||
|
public void deleteById(long id) { |
||||||
|
repo.deleteById(id); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Проверка наличия организации в базе. |
||||||
|
* организацию можно считать присутствующей в базе, если полное наименование организаций одинаковы |
||||||
|
* |
||||||
|
* @param organization |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
public boolean exists(Organization organization) { |
||||||
|
return repo.existsByNameFull(organization.getNameFull()); |
||||||
|
} |
||||||
|
|
||||||
|
public void delete(Organization organization) { |
||||||
|
repo.delete(organization); |
||||||
|
} |
||||||
|
|
||||||
|
public Long count() { |
||||||
|
return repo.count(); |
||||||
|
} |
||||||
|
|
||||||
|
public Page<Organization> findAll(Pageable pageable) { |
||||||
|
return repo.findAll(pageable); |
||||||
|
} |
||||||
|
|
||||||
|
public Organization findByNameShort(String nameShort) { |
||||||
|
return repo.findByNameShort(nameShort); |
||||||
|
} |
||||||
|
|
||||||
|
public Organization findByNameFull(String nameFull) { |
||||||
|
return repo.findByNameFull(nameFull); |
||||||
|
} |
||||||
|
|
||||||
|
public Page<Organization> findById(PageRequest of, long id) { |
||||||
|
return repo.findById(of, id); |
||||||
|
} |
||||||
|
|
||||||
|
public Page<Organization> findByInn(PageRequest of, String inn) { |
||||||
|
return repo.findByInn(of, inn); |
||||||
|
} |
||||||
|
|
||||||
|
public Page<Organization> findByNameFull(PageRequest of, String nameFull) { |
||||||
|
return repo.findByNameFull(of, nameFull); |
||||||
|
} |
||||||
|
|
||||||
|
public Page<Organization> findByNameShort(PageRequest of, String nameShort) { |
||||||
|
return repo.findByNameShort(of, nameShort); |
||||||
|
} |
||||||
|
|
||||||
|
public Page<Organization> findByType(PageRequest of, String type) { |
||||||
|
return repo.findByType(of, type); |
||||||
|
} |
||||||
|
|
||||||
|
public Page<Organization> findByOwnership(PageRequest of, String ownership) { |
||||||
|
return repo.findByOwnership(of, ownership); |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,82 @@ |
|||||||
|
package ru.molokoin.resourceserviceapi.services; |
||||||
|
|
||||||
|
import org.springframework.data.domain.Page; |
||||||
|
import org.springframework.data.domain.PageRequest; |
||||||
|
import org.springframework.stereotype.Service; |
||||||
|
|
||||||
|
import ru.molokoin.resourceserviceapi.entities.Program; |
||||||
|
import ru.molokoin.resourceserviceapi.entities.ProgramCretarea; |
||||||
|
import ru.molokoin.resourceserviceapi.repositories.ProgramCretareaRepository; |
||||||
|
import ru.molokoin.resourceserviceapi.repositories.ProgramRepository; |
||||||
|
|
||||||
|
@Service |
||||||
|
public class ProgramService { |
||||||
|
|
||||||
|
private final ProgramCretareaRepository pcRepo; |
||||||
|
private final ProgramRepository repo; |
||||||
|
|
||||||
|
public ProgramService(ProgramRepository repo, ProgramCretareaRepository pcRepo) { |
||||||
|
this.repo = repo; |
||||||
|
this.pcRepo = pcRepo; |
||||||
|
} |
||||||
|
|
||||||
|
public Page<Program> findAll(PageRequest of) { |
||||||
|
return repo.findAll(of); |
||||||
|
} |
||||||
|
|
||||||
|
public Long count() { |
||||||
|
return repo.count(); |
||||||
|
} |
||||||
|
|
||||||
|
public Page<Program> findById(PageRequest of, Long id) { |
||||||
|
return repo.findById(of, id); |
||||||
|
} |
||||||
|
|
||||||
|
public Page<Program> findByName(PageRequest of, String name) { |
||||||
|
return repo.findByName(of, name); |
||||||
|
} |
||||||
|
|
||||||
|
public Page<Program> findByLenght(PageRequest of, Integer lenght) { |
||||||
|
return repo.findByLenght(of, lenght); |
||||||
|
} |
||||||
|
|
||||||
|
public Page<Program> findByStudyDirection(PageRequest of, String studyDirection) { |
||||||
|
return repo.findByStudyDirection(of, studyDirection); |
||||||
|
} |
||||||
|
|
||||||
|
public void save(Program program) { |
||||||
|
repo.save(program); |
||||||
|
} |
||||||
|
|
||||||
|
public Program findById(Long id) { |
||||||
|
return repo.findById(id).get(); |
||||||
|
} |
||||||
|
|
||||||
|
public void delete(Program program) { |
||||||
|
repo.delete(program); |
||||||
|
} |
||||||
|
|
||||||
|
public Page<Program> findByPrice(PageRequest of, Integer price) { |
||||||
|
return repo.findByPrice(of, price); |
||||||
|
} |
||||||
|
|
||||||
|
public Page<Program> findByCretarea(PageRequest of, Long cretareaId) { |
||||||
|
ProgramCretarea pc = pcRepo.findById(cretareaId).get(); |
||||||
|
return repo.findByCretarea(of, pc); |
||||||
|
} |
||||||
|
|
||||||
|
public Page<Program> findByCretarea(PageRequest of, ProgramCretarea pc) { |
||||||
|
return repo.findByCretarea(of, pc); |
||||||
|
} |
||||||
|
|
||||||
|
public Page<Program> findByCretareaId(PageRequest of, String cretareaId) { |
||||||
|
ProgramCretarea pc = pcRepo.findCretareaById(Long.parseLong(cretareaId)); |
||||||
|
return repo.findByCretarea(of, pc); |
||||||
|
} |
||||||
|
|
||||||
|
public Page<Program> findByCretareaNameShort(PageRequest of, String cretareaNameShort) { |
||||||
|
ProgramCretarea pc = pcRepo.findCretareaByNameShort(cretareaNameShort); |
||||||
|
return repo.findByCretarea(of, pc); |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,186 @@ |
|||||||
|
package ru.molokoin.resourceserviceapi.services; |
||||||
|
|
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
import org.springframework.data.domain.Page; |
||||||
|
import org.springframework.data.domain.PageRequest; |
||||||
|
import org.springframework.data.domain.Pageable; |
||||||
|
import org.springframework.stereotype.Service; |
||||||
|
|
||||||
|
import ru.molokoin.resourceserviceapi.entities.Teacher; |
||||||
|
import ru.molokoin.resourceserviceapi.repositories.TeacherRepository; |
||||||
|
import ru.molokoin.resourceserviceapi.teh.strings.Naimer; |
||||||
|
|
||||||
|
@Service |
||||||
|
public class TeacherService { |
||||||
|
private final TeacherRepository repo; |
||||||
|
|
||||||
|
public TeacherService(TeacherRepository repo) { |
||||||
|
this.repo = repo; |
||||||
|
} |
||||||
|
|
||||||
|
public Page<Teacher> findAll(Pageable pageable) { |
||||||
|
return repo.findAll(pageable); |
||||||
|
} |
||||||
|
|
||||||
|
public List<Teacher> findAll() { |
||||||
|
return repo.findAll(); |
||||||
|
} |
||||||
|
|
||||||
|
public Teacher findById(long id) { |
||||||
|
return repo.findById(id); |
||||||
|
} |
||||||
|
|
||||||
|
public Boolean existsById(long id) { |
||||||
|
return repo.existsById(id); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Получить из базы объект преопдавателя по фамилии, имени и отчеству |
||||||
|
* в одной строке |
||||||
|
* @param fio |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
public List<Teacher> findByFIO(String fio) { |
||||||
|
String firstName = Naimer.getFirstNameOf(fio); |
||||||
|
String secondName = Naimer.getSecondNameOf(fio); |
||||||
|
String lastName = Naimer.getLastNameOf(fio); |
||||||
|
return repo.findBySecondNameAndFirstNameAndLastName(secondName, firstName, lastName); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Получить из базы объект преопдавателя по фамилии, имени и отчеству |
||||||
|
* |
||||||
|
* @param secondName |
||||||
|
* @param firstName |
||||||
|
* @param lastName |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
public List<Teacher> findByFIO(String secondName, String firstName, String lastName) { |
||||||
|
return repo.findBySecondNameAndFirstNameAndLastName(secondName, firstName, lastName); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Проверка существования преподавателя по фамилии, имени и отчеству |
||||||
|
* в одной строке |
||||||
|
* @param fio |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
public Boolean existsByFIO(String fio) { |
||||||
|
return repo.existsBySecondNameAndFirstNameAndLastName(Naimer.getSecondNameOf(fio), |
||||||
|
Naimer.getFirstNameOf(fio), |
||||||
|
Naimer.getLastNameOf(fio)); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Проверка существования преподавателя по фамилии, имени и отчеству |
||||||
|
* |
||||||
|
* @param secondName |
||||||
|
* @param firstName |
||||||
|
* @param lastName |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
public Boolean existsByFIO(String secondName, String firstName, String lastName) { |
||||||
|
boolean exists = repo.existsBySecondNameAndFirstNameAndLastName(secondName, firstName, lastName); |
||||||
|
return exists; |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
public List<Teacher> findBySecondName(String secondName) { |
||||||
|
return repo.findBySecondName(secondName); |
||||||
|
} |
||||||
|
|
||||||
|
public Boolean existsBySecondName(String secondName) { |
||||||
|
return repo.existsBySecondName(secondName); |
||||||
|
} |
||||||
|
|
||||||
|
public void save(Teacher teacher) { |
||||||
|
repo.save(teacher); |
||||||
|
} |
||||||
|
|
||||||
|
public void delete(Teacher teacher) { |
||||||
|
repo.delete(teacher); |
||||||
|
} |
||||||
|
|
||||||
|
public Long count() { |
||||||
|
return repo.count(); |
||||||
|
} |
||||||
|
|
||||||
|
public List<Teacher> findByEmployeeId(String employeeId) { |
||||||
|
return repo.findByEmployeeId(employeeId); |
||||||
|
} |
||||||
|
|
||||||
|
public List<Teacher> findBySnils(String snils) { |
||||||
|
return repo.findBySnils(snils); |
||||||
|
} |
||||||
|
|
||||||
|
public Boolean existsBySnils(String snils) { |
||||||
|
return repo.existsBySnils(snils); |
||||||
|
} |
||||||
|
|
||||||
|
public Boolean existsByEmployeeId(String employeeId) { |
||||||
|
return repo.existsByEmployeeId(employeeId); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Проверка наличия записи о преподавателе в базе |
||||||
|
* @param teacher |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
public Boolean exists(Teacher teacher) { |
||||||
|
Boolean exists = false; |
||||||
|
//если есть id, то проверяем существование
|
||||||
|
if (teacher.getId() != 0L && repo.existsById(teacher.getId())) { |
||||||
|
exists = true; |
||||||
|
} else { |
||||||
|
//если нет id, то проверяем существование по снилс
|
||||||
|
if (teacher.getSnils() != null && repo.existsBySnils(teacher.getSnils())) { |
||||||
|
exists = true; |
||||||
|
} else { |
||||||
|
//если нет id и нет снилс, то проверяем существование по ФИО
|
||||||
|
if (teacher.getSecondName() != null |
||||||
|
&& repo.existsBySecondNameAndFirstNameAndLastName(teacher.getSecondName(), teacher.getFirstName(), teacher.getLastName())) { |
||||||
|
exists = true; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
return exists; |
||||||
|
} |
||||||
|
|
||||||
|
public Page<Teacher> findById(PageRequest of, long id) { |
||||||
|
return repo.findById(of, id); |
||||||
|
} |
||||||
|
|
||||||
|
public Page<Teacher> findBySnils(PageRequest of, String snils) { |
||||||
|
return repo.findBySnils(of, snils); |
||||||
|
} |
||||||
|
|
||||||
|
public Page<Teacher> findByEmployeeId(PageRequest of, String employeeId) { |
||||||
|
return repo.findByEmployeeId(of, employeeId); |
||||||
|
} |
||||||
|
|
||||||
|
public Page<Teacher> findByFio(PageRequest of, String fio) { |
||||||
|
return repo.findBySecondNameAndFirstNameAndLastName( |
||||||
|
of, |
||||||
|
Naimer.getSecondNameOf(fio), |
||||||
|
Naimer.getFirstNameOf(fio), |
||||||
|
Naimer.getLastNameOf(fio)); |
||||||
|
} |
||||||
|
|
||||||
|
public Page<Teacher> findBySecondName(PageRequest of, String secondName) { |
||||||
|
return repo.findBySecondName(of, secondName); |
||||||
|
} |
||||||
|
|
||||||
|
public Page<Teacher> findBySecondNameAndFirstName(PageRequest of, String secondName, String firstName) { |
||||||
|
return repo.findBySecondNameAndFirstName(of, secondName, firstName); |
||||||
|
} |
||||||
|
|
||||||
|
public Page<Teacher> findBySecondNameAndFirstNameAndLastName(PageRequest of, String secondName, String firstName, |
||||||
|
String lastName) { |
||||||
|
return repo.findBySecondNameAndFirstNameAndLastName(of, secondName, firstName, lastName); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
} |
@ -0,0 +1,51 @@ |
|||||||
|
package ru.molokoin.resourceserviceapi.teh.strings; |
||||||
|
|
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
public class Arrayer { |
||||||
|
|
||||||
|
/** |
||||||
|
* Удаляет все пустые строки из массива строк и возвращает новый массив с оставшимися строками. |
||||||
|
* |
||||||
|
* @param strings Массив строк из которогу удаляются пустые строки. |
||||||
|
* @return Новый массив с оставшимися строками. |
||||||
|
*/ |
||||||
|
public static String[] removeEmptyStrings(String[] strings) { |
||||||
|
|
||||||
|
// Подсчет количества непустых строк в входном массиве
|
||||||
|
int count = 0; |
||||||
|
for (String string : strings) { |
||||||
|
if (!string.equals("")) { |
||||||
|
count++; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
// Новый массив для хранения непустых строк
|
||||||
|
String[] result = new String[count]; |
||||||
|
|
||||||
|
// Копирование непустых строк из входного массива в новый массив
|
||||||
|
int index = 0; |
||||||
|
for (String string : strings) { |
||||||
|
if (!string.equals("")) { |
||||||
|
result[index] = string; |
||||||
|
index++; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
// Возвращение нового массива с непустыми строками
|
||||||
|
return result; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Удаление повторяющихся элементов списка строк |
||||||
|
* Получение списка уникальных строк |
||||||
|
* |
||||||
|
*/ |
||||||
|
public static List<String> uniqueList(List<String> list) { |
||||||
|
// Удаление повторяющихся элементов списка
|
||||||
|
List<String> result = list.stream().distinct().toList(); |
||||||
|
return result; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
} |
@ -0,0 +1,16 @@ |
|||||||
|
package ru.molokoin.resourceserviceapi.teh.strings; |
||||||
|
|
||||||
|
import java.time.LocalDate; |
||||||
|
import java.time.LocalDateTime; |
||||||
|
import java.util.Date; |
||||||
|
|
||||||
|
/** |
||||||
|
* Обработка строк с датами |
||||||
|
*/ |
||||||
|
public class Dater { |
||||||
|
private Long longDate; |
||||||
|
private String stringDate; |
||||||
|
private Date date; |
||||||
|
private LocalDate localDate; |
||||||
|
private LocalDateTime localDateTime; |
||||||
|
} |
@ -0,0 +1,237 @@ |
|||||||
|
package ru.molokoin.resourceserviceapi.teh.strings; |
||||||
|
|
||||||
|
import ru.molokoin.resourceserviceapi.entities.Teacher; |
||||||
|
|
||||||
|
/** |
||||||
|
* Обработка строк, содержащих сведения о ФИО |
||||||
|
* - Teacher |
||||||
|
* - Student |
||||||
|
* - Person |
||||||
|
*/ |
||||||
|
public class Naimer { |
||||||
|
private static String not = "Нет"; |
||||||
|
/** |
||||||
|
* Объединяет фамилию, имя и отчество в одну строку. |
||||||
|
* Возможые ситуации: |
||||||
|
* - фамилия, имя или отчество могут содержать нулевые значения |
||||||
|
* - отчество может содержать приписки |
||||||
|
* |
||||||
|
* @param second_name - фамилия |
||||||
|
* @param first_name - имя |
||||||
|
* @param last_name - отчество |
||||||
|
* @return объединенную строку или пустую строку, |
||||||
|
* если все входящие параметры являются нулевыми значениями |
||||||
|
*/ |
||||||
|
public static String getFioOf(String second_name, String first_name, String last_name) { |
||||||
|
// Инициализируем StringBuilder для хранения результата.
|
||||||
|
StringBuilder result = new StringBuilder(); |
||||||
|
|
||||||
|
// Проверяем, является ли фамилия нулевым значением.
|
||||||
|
if (!Stringer.checkForEmpty(second_name)) { |
||||||
|
// Если фамилия не является нулевым значением, то добавляем ее в строку.
|
||||||
|
result.append(second_name); |
||||||
|
} else { |
||||||
|
// Если фамилия является нулевым значением, то добавляем "Нет" в строку.
|
||||||
|
result.append(not); |
||||||
|
} |
||||||
|
|
||||||
|
// Проверяем, является ли имя нулевым значением.
|
||||||
|
if (!Stringer.checkForEmpty(first_name)) { |
||||||
|
// Если имя не является нулевым значением, то добавляем пробел и имя в строку.
|
||||||
|
result.append(" " + first_name); |
||||||
|
} else { |
||||||
|
// Если имя является нулевым значением, то добавляем "Нет" в строку.
|
||||||
|
result.append(" " + not); |
||||||
|
} |
||||||
|
|
||||||
|
// Проверяем, является ли отчество нулевым значением.
|
||||||
|
if (!Stringer.checkForEmpty(last_name)) { |
||||||
|
// Если отчество не является нулевым значением, то добавляем пробел и отчество в строку.
|
||||||
|
result.append(" " + last_name); |
||||||
|
} else { |
||||||
|
// Если отчество является нулевым значением, то добавляем "Нет" в строку.
|
||||||
|
result.append(" " + not); |
||||||
|
} |
||||||
|
|
||||||
|
// Возвращаем объединенную строку или строку "Нет Нет Нет",
|
||||||
|
//если все входящие параметры являются нулевыми значениями.
|
||||||
|
return result.toString().trim(); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* Объединяет фамилию, имя и отчество из объекта преподавателя в одну строку. |
||||||
|
* Возможные ситуации: |
||||||
|
* - фамилия, имя или отчество могут содержать нулевые значения |
||||||
|
* - отчество может содержать приписки |
||||||
|
* |
||||||
|
* @param teacher - объект преподавателя |
||||||
|
* @return объединенная строка или строка "Нет Нет Нет", |
||||||
|
* если все входящие параметры являются нулевыми значениями |
||||||
|
*/ |
||||||
|
public static String getFioOf(Teacher teacher) { |
||||||
|
// Инициализируем StringBuilder для хранения результата.
|
||||||
|
StringBuilder result = new StringBuilder(); |
||||||
|
|
||||||
|
// Проверяем, является ли фамилия нулевым значением.
|
||||||
|
if (!Stringer.checkForEmpty(teacher.getSecondName())) { |
||||||
|
// Если фамилия не является нулевым значением, то добавляем ее в строку.
|
||||||
|
result.append(teacher.getSecondName()); |
||||||
|
} else { |
||||||
|
// Если фамилия является нулевым значением, то добавляем "Нет" в строку.
|
||||||
|
result.append(not); |
||||||
|
} |
||||||
|
|
||||||
|
// Проверяем, является ли имя нулевым значением.
|
||||||
|
if (!Stringer.checkForEmpty(teacher.getFirstName())) { |
||||||
|
// Если имя не является нулевым значением, то добавляем пробел и имя в строку.
|
||||||
|
result.append(" " + teacher.getFirstName()); |
||||||
|
} else { |
||||||
|
// Если имя является нулевым значением, то добавляем "Нет" в строку.
|
||||||
|
result.append(" " + not); |
||||||
|
} |
||||||
|
|
||||||
|
// Проверяем, является ли отчество нулевым значением.
|
||||||
|
if (!Stringer.checkForEmpty(teacher.getLastName())) { |
||||||
|
// Если отчество не является нулевым значением, то добавляем пробел и отчество в строку.
|
||||||
|
result.append(" " + teacher.getLastName()); |
||||||
|
} else { |
||||||
|
// Если отчество является нулевым значением, то добавляем "Нет" в строку.
|
||||||
|
result.append(" " + not); |
||||||
|
} |
||||||
|
|
||||||
|
// Возвращаем объединенную строку или строку "Нет Нет Нет", если все входящие параметры
|
||||||
|
// являются нулевыми значениями.
|
||||||
|
return result.toString().trim(); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Извлекает фамилию из строки, содержащей полное имя (ФИО). |
||||||
|
* Строка ФИО может содержать: |
||||||
|
* - пустую строку (null, empty, "") |
||||||
|
* - одно слово (фамилия, "Нет", односложный комментарий) |
||||||
|
* - два слова (фамилия, имя, "Нет") |
||||||
|
* - три слова (фамилия, имя, отчество, "Нет") |
||||||
|
* - четыре слова (фамилия, имя, отчество, постфикс отчества, комментарии) |
||||||
|
* - и более. |
||||||
|
* |
||||||
|
* Все слова начиная с пятого однозначно являются бесполезным наполнением, однако |
||||||
|
* такие слова должны включены в строку отчества, если они есть. |
||||||
|
* |
||||||
|
* Строка может быть извлечена из xlsx файла |
||||||
|
* или сгенерирована из данныых содержащихся в базе данных |
||||||
|
* |
||||||
|
* @param fio строка, содержащая ФИО |
||||||
|
* @return строка, содержащая первое слово из fio которое является фамилией или содержит слово "Нет" |
||||||
|
*/ |
||||||
|
public static String getSecondNameOf(String fio) { |
||||||
|
// Инициализируем StringBuilder для хранения результата.
|
||||||
|
StringBuilder result = new StringBuilder(); |
||||||
|
|
||||||
|
// Проверяем, является ли строка null, пустой строкой или состоит только из пробелов.
|
||||||
|
if (Stringer.checkForEmpty(fio)) { |
||||||
|
// Если строка является нулевым значением, то добавляем "Нет" в строку.
|
||||||
|
result.append(not); |
||||||
|
} else { |
||||||
|
//убираем пробелы в начале и в конце строки
|
||||||
|
fio = fio.trim(); |
||||||
|
|
||||||
|
// Разделяем строку на пробелы и возвращаем первую часть, которая как ожидается является фамилией
|
||||||
|
result.append(fio.split(" ")[0]); |
||||||
|
} |
||||||
|
|
||||||
|
// Возвращаем первое слово в строке или строку "Нет"
|
||||||
|
return result.toString().trim(); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Извлекает имя (фамилия, имя или отчество) из строки, предположительно содержащей только одно слово. |
||||||
|
* - проверяет не пустая ли строка, если нет, то добавляет "Нет" |
||||||
|
* - очищает строку от лишних пробельных символов |
||||||
|
* - возвращает имя или "Нет" |
||||||
|
* |
||||||
|
* @param name |
||||||
|
* @return name |
||||||
|
*/ |
||||||
|
public static String getNameOf(String name) { |
||||||
|
// Проверяем, является ли строка null, пустой строкой или состоит только из пробелов.
|
||||||
|
if (Stringer.checkForEmpty(name)) { |
||||||
|
// Если строка является нулевым значением, то добавляем "Нет" в строку.
|
||||||
|
return not; |
||||||
|
} else { |
||||||
|
//очищаем строку
|
||||||
|
name = Stringer.clear(name); |
||||||
|
// возвращаем имя
|
||||||
|
return name; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Извлекает имя из строки, содержащей полное имя (ФИО). |
||||||
|
* |
||||||
|
* @param fio строка, содержащая ФИО |
||||||
|
* @return строка, содержащая второе слово из fio которое является именем или содержит слово "Нет" |
||||||
|
*/ |
||||||
|
public static String getFirstNameOf(String fio) { |
||||||
|
// Создаем StringBuilder для хранения результата
|
||||||
|
StringBuilder result = new StringBuilder(); |
||||||
|
|
||||||
|
// Проверяем, является ли строка null, пустой строкой или состоит только из пробелов.
|
||||||
|
if (Stringer.checkForEmpty(fio)) { |
||||||
|
// Если строка является нулевым значением, то добавляем "Нет" в строку.
|
||||||
|
result.append(not); |
||||||
|
} else { |
||||||
|
//убираем излишние пробельные символы
|
||||||
|
fio = Stringer.clear(fio); |
||||||
|
|
||||||
|
// Разбиваем строку по пробелам и пишем слова в массив
|
||||||
|
String[] strings = fio.split(" "); |
||||||
|
|
||||||
|
// Если массив содержит два или более слов, то второе слово является именем.
|
||||||
|
if (strings.length > 1) { |
||||||
|
// Пишем второе слово в результат
|
||||||
|
result.append(strings[1].trim()); |
||||||
|
}else { |
||||||
|
// Если массив содержит только одно слово, то добавляем "Нет" в строку.
|
||||||
|
result.append(not); |
||||||
|
} |
||||||
|
} |
||||||
|
// Возвращаем второе слово в строке или строку "Нет"
|
||||||
|
return result.toString().trim(); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Извлекает отчество из строки, содержащей полное имя (ФИО). |
||||||
|
* @param fio строка, содержащая ФИО |
||||||
|
* @return строка, содержащая третье слово из fio которое является отчеством\ |
||||||
|
* или содержит слово "Нет" |
||||||
|
* или содержит все слова, содержащиеся в ФИО, за исключением первых двух |
||||||
|
*/ |
||||||
|
public static String getLastNameOf(String fio) { |
||||||
|
// Создаем StringBuilder для хранения результата
|
||||||
|
StringBuilder result = new StringBuilder(); |
||||||
|
|
||||||
|
// Проверяем, является ли строка null, пустой строкой или состоит только из пробелов.
|
||||||
|
if (Stringer.checkForEmpty(fio)) { |
||||||
|
// Если строка является нулевым значением, то добавляем "Нет" в строку.
|
||||||
|
result.append(not); |
||||||
|
} else { |
||||||
|
//убираем пробелы в начале и в конце строки
|
||||||
|
fio = fio.trim(); |
||||||
|
fio = Stringer.clear(fio); |
||||||
|
|
||||||
|
String[] strings = fio.split(" "); |
||||||
|
if (strings.length > 2) { |
||||||
|
// Пишем третье и последующие слова в результат
|
||||||
|
for (int i = 2; i < strings.length; i++) { |
||||||
|
result.append(strings[i]).append(" "); |
||||||
|
} |
||||||
|
} else { |
||||||
|
// Если массив содержит только два или менее слов, то добавляем "Нет" в строку.
|
||||||
|
result.append(not); |
||||||
|
} |
||||||
|
} |
||||||
|
// Возвращаем строку ФИО без первых двух слов с удаленными лишними пробелами
|
||||||
|
return result.toString().trim(); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,54 @@ |
|||||||
|
package ru.molokoin.resourceserviceapi.teh.strings; |
||||||
|
|
||||||
|
/** |
||||||
|
* Класс для работы со строками |
||||||
|
*/ |
||||||
|
public class Stringer { |
||||||
|
|
||||||
|
/** |
||||||
|
* Проверяет, является ли переданная строка null, пустой строкой или состоит только из пробелов. |
||||||
|
* |
||||||
|
* @param str Строка для проверки |
||||||
|
* @return True если строка является null, пустой строкой или состоит только из пробелов |
||||||
|
* False в противном случае |
||||||
|
*/ |
||||||
|
public static Boolean checkForEmpty(String str) { |
||||||
|
// Check if the string is null
|
||||||
|
if (str == null) { |
||||||
|
return true; |
||||||
|
} |
||||||
|
// Check if the string is empty or consists only of whitespace characters
|
||||||
|
if (str.isEmpty() || str.trim().isEmpty()) { |
||||||
|
return true; |
||||||
|
} |
||||||
|
// The string is not null, not empty and does not consist only of whitespace characters
|
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Удаляет регулярным выражением лишние пробельные символы из строки. |
||||||
|
* |
||||||
|
* Заменяет знаки переноса строки на пробелы с помощью использования регулярного выражения |
||||||
|
* \s+ - пробелы (и все ниже приведенные пробельные символы) |
||||||
|
* \t - табуляция |
||||||
|
* \v - вертикальная табуляция |
||||||
|
* \r - перенос в начало строки |
||||||
|
* \n - перенос строки |
||||||
|
* \f - форматированный перенос строки |
||||||
|
* |
||||||
|
* Осавляет по одному пробелу между словами, если слов больше одного |
||||||
|
* Возвращает пустую строку, если получена строка null |
||||||
|
* |
||||||
|
* @param string строка для обработки |
||||||
|
* @return строку без лишних пробелов или пустую строку |
||||||
|
*/ |
||||||
|
public static String clear(String string) { |
||||||
|
// Проверяем, не является ли строка null. Если строка null, возвращаем пустую строку.
|
||||||
|
if (string == null) { |
||||||
|
return ""; |
||||||
|
} |
||||||
|
|
||||||
|
// Удаляем лишние пробелы из строки.
|
||||||
|
return string.replaceAll("\\s+", " ").trim(); |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue