esoe
2 months ago
32 changed files with 1678 additions and 181 deletions
@ -0,0 +1,27 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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