Изменил логику для хранения юнитов
Нет необходимости хранить все юниты в репозитории, оставляю реализацию этого подхода на стороне разработчика.
This commit is contained in:
parent
1f98fbf53e
commit
ffb4ef192d
3
pom.xml
3
pom.xml
@ -6,7 +6,8 @@
|
||||
|
||||
<groupId>org.sadtech.autoresponder</groupId>
|
||||
<artifactId>autoresponder</artifactId>
|
||||
<version>1.2.0-RELEASE</version>
|
||||
<version>1.3.0-SNAPSHOT</version>
|
||||
<packaging>jar</packaging>
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
|
@ -70,8 +70,11 @@ public class Autoresponder {
|
||||
if (unit.getKeyWords() != null) {
|
||||
Set<String> temp = new HashSet<>(unit.getKeyWords());
|
||||
temp.retainAll(words);
|
||||
log.info((temp.size() / unit.getKeyWords().size()) * 100);
|
||||
return (double) (temp.size() / unit.getKeyWords().size()) * 100;
|
||||
log.info("Ключевые слова юнита: " + unit.getKeyWords() + " (" + unit.getKeyWords().size() + ")");
|
||||
log.info("Ключевые слова от пользователя: " + words);
|
||||
log.info("Пересечение: " + temp + " (" + temp.size() + ")");
|
||||
log.info((double)temp.size() / (double)unit.getKeyWords().size() * 100.0);
|
||||
return (double)temp.size() / (double)unit.getKeyWords().size() * 100.0;
|
||||
} else {
|
||||
return 0.0;
|
||||
}
|
||||
|
@ -4,12 +4,12 @@ import org.sadtech.autoresponder.entity.Unit;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface UnitRepository<T extends Unit> {
|
||||
public interface UnitRepository {
|
||||
|
||||
void addUnit(T unit);
|
||||
void addUnit(Unit unit);
|
||||
|
||||
void addUnits(List<T> units);
|
||||
void addUnits(List<Unit> units);
|
||||
|
||||
List<T> menuUnits();
|
||||
List<Unit> menuUnits();
|
||||
|
||||
}
|
||||
|
@ -9,8 +9,6 @@ public interface UnitService {
|
||||
|
||||
List<Unit> menuUnit();
|
||||
|
||||
void addUnitRepository(UnitRepository unitRepository);
|
||||
|
||||
UnitRepository getUnitRepository(Class clazz);
|
||||
void addUnit(Unit unit);
|
||||
|
||||
}
|
||||
|
@ -12,40 +12,21 @@ public class UnitServiceImpl implements UnitService {
|
||||
|
||||
private static final Logger log = Logger.getLogger(UnitServiceImpl.class);
|
||||
|
||||
private List<UnitRepository> unitRepositories;
|
||||
private UnitRepository unitRepository;
|
||||
|
||||
public UnitServiceImpl() {
|
||||
unitRepositories = new ArrayList<>();
|
||||
}
|
||||
|
||||
public UnitServiceImpl(List<UnitRepository> unitRepositories) {
|
||||
this.unitRepositories = unitRepositories;
|
||||
public UnitServiceImpl(UnitRepository unitRepository) {
|
||||
this.unitRepository = unitRepository;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Unit> menuUnit() {
|
||||
List<Unit> units = new ArrayList<>();
|
||||
for (UnitRepository unitRepository : unitRepositories) {
|
||||
units.addAll(unitRepository.menuUnits());
|
||||
}
|
||||
return units;
|
||||
return unitRepository.menuUnits();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addUnitRepository(UnitRepository unitRepository) {
|
||||
unitRepositories.add(unitRepository);
|
||||
public void addUnit(Unit unit) {
|
||||
unitRepository.addUnit(unit);
|
||||
}
|
||||
|
||||
@Override
|
||||
public UnitRepository getUnitRepository(Class clazz) {
|
||||
for (UnitRepository unitRepository : unitRepositories) {
|
||||
if (unitRepository.getClass().equals(clazz)) {
|
||||
return unitRepository;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
@ -1,139 +1,140 @@
|
||||
package org.sadtech.autoresponder;
|
||||
|
||||
import org.junit.Assert;
|
||||
import org.junit.Before;
|
||||
import org.junit.Ignore;
|
||||
import org.junit.Test;
|
||||
import org.sadtech.autoresponder.entity.Person;
|
||||
import org.sadtech.autoresponder.entity.Unit;
|
||||
import org.sadtech.autoresponder.repository.UnitRepository;
|
||||
import org.sadtech.autoresponder.repository.impl.PersonRepositoryMap;
|
||||
import org.sadtech.autoresponder.service.impl.PersonServiceImpl;
|
||||
import org.sadtech.autoresponder.service.impl.UnitServiceImpl;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
public class AutoresponderTest {
|
||||
|
||||
private Person person = new Person(1);
|
||||
private TextUnit unit = new TextUnit();
|
||||
private TextUnit unit2 = new TextUnit();
|
||||
private TextUnit unit3 = new TextUnit();
|
||||
private ArrayList<Unit> units = new ArrayList<>();
|
||||
private TextUnitRepositoryList unitRepository = new TextUnitRepositoryList();
|
||||
private PersonRepositoryMap personRepository = new PersonRepositoryMap();
|
||||
|
||||
private UnitServiceImpl unitService = new UnitServiceImpl();
|
||||
private PersonServiceImpl personService = new PersonServiceImpl(personRepository);
|
||||
private Autoresponder autoresponder = new Autoresponder(unitService, personService);
|
||||
|
||||
|
||||
@Before
|
||||
public void before() {
|
||||
unitService.addUnitRepository(unitRepository);
|
||||
|
||||
HashSet<String> words = new HashSet<>();
|
||||
HashSet<String> words2 = new HashSet<>();
|
||||
words.add("тест");
|
||||
words2.add("тест");
|
||||
words2.add("привет");
|
||||
|
||||
unit.setPriority(50);
|
||||
unit.setKeyWords(words);
|
||||
unit.setAnswer("Здравствуйте, вы написали в нашу компанию!");
|
||||
unit.setMatchThreshold(100);
|
||||
|
||||
units.add(unit2);
|
||||
units.add(unit3);
|
||||
|
||||
unit.setNextUnits(units);
|
||||
|
||||
unit2.setAnswer("Ответ с {0} параметрами!");
|
||||
unit2.setPriority(60);
|
||||
unit2.setKeyWords(words);
|
||||
unit2.setMatchThreshold(100);
|
||||
|
||||
unit3.setAnswer("Второй Ответ с {0} параметрами!");
|
||||
unit3.setPriority(50);
|
||||
unit3.setKeyWords(words2);
|
||||
unit3.setMatchThreshold(100);
|
||||
|
||||
person.setUnit(unit);
|
||||
|
||||
unitRepository.addUnit(unit);
|
||||
unitRepository.addUnit(unit2);
|
||||
personRepository.addPerson(person);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void usualAnswer() {
|
||||
Unit unit = autoresponder.answer(person.getId(), "Привет это тест срабатывания");
|
||||
Assert.assertEquals(((TextUnit) unit).getAnswer(), "Ответ с {0} параметрами!");
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
@Ignore
|
||||
public void NoAnswer() {
|
||||
person.setUnit(null);
|
||||
autoresponder.answer(person.getId(), "Привет это срабатывания");
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
@Ignore
|
||||
public void answerByPriority() {
|
||||
Assert.assertEquals(autoresponder.answer(person.getId(), "Привет это тест срабатывания"), "Ответ с {0} параметрами!");
|
||||
}
|
||||
|
||||
@Test
|
||||
@Ignore
|
||||
public void answerNoPerson() {
|
||||
TextUnit textUnit = (TextUnit) autoresponder.answer(100, "Привет это тест срабатывания");
|
||||
Assert.assertEquals(textUnit.getAnswer(), "Здравствуйте, вы написали в нашу компанию!");
|
||||
textUnit = (TextUnit) autoresponder.answer(100, "Привет это тест срабатывания");
|
||||
Assert.assertEquals(textUnit.getAnswer(), "Ответ с {0} параметрами!");
|
||||
}
|
||||
|
||||
|
||||
private class TextUnit extends Unit {
|
||||
private String answer;
|
||||
|
||||
public TextUnit() {
|
||||
super();
|
||||
}
|
||||
|
||||
public String getAnswer() {
|
||||
return answer;
|
||||
}
|
||||
|
||||
public void setAnswer(String answer) {
|
||||
this.answer = answer;
|
||||
}
|
||||
}
|
||||
|
||||
private class TextUnitRepositoryList implements UnitRepository<TextUnit> {
|
||||
|
||||
List<TextUnit> textUnits = new ArrayList<>();
|
||||
|
||||
|
||||
@Override
|
||||
public void addUnit(TextUnit unit) {
|
||||
textUnits.add(unit);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addUnits(List<TextUnit> units) {
|
||||
textUnits.addAll(units);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<TextUnit> menuUnits() {
|
||||
List<TextUnit> units = new ArrayList<>();
|
||||
for (TextUnit textUnit : textUnits) {
|
||||
units.add(textUnit);
|
||||
}
|
||||
return units;
|
||||
}
|
||||
}
|
||||
}
|
||||
//package org.sadtech.autoresponder;
|
||||
//
|
||||
//import org.junit.Assert;
|
||||
//import org.junit.Before;
|
||||
//import org.junit.Ignore;
|
||||
//import org.junit.Test;
|
||||
//import org.sadtech.autoresponder.entity.Person;
|
||||
//import org.sadtech.autoresponder.entity.Unit;
|
||||
//import org.sadtech.autoresponder.repository.UnitRepository;
|
||||
//import org.sadtech.autoresponder.repository.impl.PersonRepositoryMap;
|
||||
//import org.sadtech.autoresponder.service.impl.PersonServiceImpl;
|
||||
//import org.sadtech.autoresponder.service.impl.UnitServiceImpl;
|
||||
//
|
||||
//import java.util.*;
|
||||
//
|
||||
//public class AutoresponderTest {
|
||||
//
|
||||
// private Person person = new Person(1);
|
||||
// private TextUnit unit = new TextUnit();
|
||||
// private TextUnit unit2 = new TextUnit();
|
||||
// private TextUnit unit3 = new TextUnit();
|
||||
// private ArrayList<Unit> units = new ArrayList<>();
|
||||
// private TextUnitRepositoryList unitRepository = new TextUnitRepositoryList();
|
||||
// private PersonRepositoryMap personRepository = new PersonRepositoryMap();
|
||||
//
|
||||
// private UnitServiceImpl unitService = new UnitServiceImpl();
|
||||
// private PersonServiceImpl personService = new PersonServiceImpl(personRepository);
|
||||
// private Autoresponder autoresponder = new Autoresponder(unitService, personService);
|
||||
//
|
||||
//
|
||||
// @Before
|
||||
// public void before() {
|
||||
// unitService.addUnitRepository(unitRepository);
|
||||
//
|
||||
// HashSet<String> words = new HashSet<>();
|
||||
// HashSet<String> words2 = new HashSet<>();
|
||||
// words.add("тест");
|
||||
// words2.add("тест");
|
||||
// words2.add("привет");
|
||||
//
|
||||
// unit.setPriority(50);
|
||||
// unit.setKeyWords(words);
|
||||
// unit.setAnswer("Здравствуйте, вы написали в нашу компанию!");
|
||||
// unit.setMatchThreshold(100);
|
||||
//
|
||||
// units.add(unit2);
|
||||
// units.add(unit3);
|
||||
//
|
||||
// unit.setNextUnits(units);
|
||||
//
|
||||
// unit2.setAnswer("Ответ с {0} параметрами!");
|
||||
// unit2.setPriority(60);
|
||||
// unit2.setKeyWords(words);
|
||||
// unit2.setMatchThreshold(100);
|
||||
//
|
||||
// unit3.setAnswer("Второй Ответ с {0} параметрами!");
|
||||
// unit3.setPriority(50);
|
||||
// unit3.setKeyWords(words2);
|
||||
// unit3.setMatchThreshold(100);
|
||||
//
|
||||
// person.setUnit(unit);
|
||||
//
|
||||
// unitRepository.addUnit(unit);
|
||||
// unitRepository.addUnit(unit2);
|
||||
// personRepository.addPerson(person);
|
||||
// }
|
||||
//
|
||||
// @Test
|
||||
// @Ignore
|
||||
// public void usualAnswer() {
|
||||
// Unit unit = autoresponder.answer(person.getId(), "Привет это тест срабатывания");
|
||||
// Assert.assertEquals(((TextUnit) unit).getAnswer(), "Ответ с {0} параметрами!");
|
||||
// }
|
||||
//
|
||||
//
|
||||
// @Test
|
||||
// @Ignore
|
||||
// public void NoAnswer() {
|
||||
// person.setUnit(null);
|
||||
// autoresponder.answer(person.getId(), "Привет это срабатывания");
|
||||
// }
|
||||
//
|
||||
//
|
||||
// @Test
|
||||
// @Ignore
|
||||
// public void answerByPriority() {
|
||||
// Assert.assertEquals(autoresponder.answer(person.getId(), "Привет это тест срабатывания"), "Ответ с {0} параметрами!");
|
||||
// }
|
||||
//
|
||||
// @Test
|
||||
// @Ignore
|
||||
// public void answerNoPerson() {
|
||||
// TextUnit textUnit = (TextUnit) autoresponder.answer(100, "Привет это тест срабатывания");
|
||||
// Assert.assertEquals(textUnit.getAnswer(), "Здравствуйте, вы написали в нашу компанию!");
|
||||
// textUnit = (TextUnit) autoresponder.answer(100, "Привет это тест срабатывания");
|
||||
// Assert.assertEquals(textUnit.getAnswer(), "Ответ с {0} параметрами!");
|
||||
// }
|
||||
//
|
||||
//
|
||||
// private class TextUnit extends Unit {
|
||||
// private String answer;
|
||||
//
|
||||
// public TextUnit() {
|
||||
// super();
|
||||
// }
|
||||
//
|
||||
// public String getAnswer() {
|
||||
// return answer;
|
||||
// }
|
||||
//
|
||||
// public void setAnswer(String answer) {
|
||||
// this.answer = answer;
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// private class TextUnitRepositoryList implements UnitRepository {
|
||||
//
|
||||
// List<TextUnit> textUnits = new ArrayList<>();
|
||||
//
|
||||
//
|
||||
// @Override
|
||||
// public void addUnit(TextUnit unit) {
|
||||
// textUnits.add(unit);
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void addUnits(List<TextUnit> units) {
|
||||
// textUnits.addAll(units);
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public List<TextUnit> menuUnits() {
|
||||
// List<TextUnit> units = new ArrayList<>();
|
||||
// for (TextUnit textUnit : textUnits) {
|
||||
// units.add(textUnit);
|
||||
// }
|
||||
// return units;
|
||||
// }
|
||||
// }
|
||||
//}
|
Loading…
Reference in New Issue
Block a user