Project Standarts (java) - LamronNu/i GitHub Wiki
##Project Standarts (java)
- 1) Стандарты создания контроллера с сервисами в нем
- 2) использование liquibase (где они лежат базовые чанджсеты, которые трогать нельзя)
- 2.1) правила добавления "чанджсетов" для liquibase (где они лежат для регионального/бэйса и центрального)
- 2.2) использование файлов "лоадеров данных" (/data/*) для liquibase (где они лежат для регионального/бэйса и центрального, и как учитіваются подпапки beta и test)
- 3) использование hibernate и базовых сущностей
- 4) использование queryloader-а (для хранения SQL-запросов)
- 5) где хранятся БП, и как учитываются подпапки beta и test
- 6) где хранятся контексты и проперти и как они наследуются проектами (в т.ч. приписка *_local)
- 7) при использовании маркированных переменных ,что означают в начале их названий маленькие буквы: n,s,b,m,a,o, с примерами... (и возможные их комбинации: so,sa,as,ab,an,ao,ma,am,,, и т.д.,)
- 8) что за папка с шаблонами: /pattern/* (шаблоны для форм печати, шаблоны для писем и т.д.), и как, например, можно использовать в БП шаблоны из "pattern.print/*"
- 9) Методы авторизации (basic-authorization): со стандартным системным логином паролем, с логином/паролем из активити, с одноразовым ключем (сгенерированным)
- 10) Информация и инструкция к используемым модулям
- 10.1) Электронная очередь
- 10.2) Электронные платежи (Liqpay), в т.ч. с отсылкой "кнопки оплаты" письмом
- 10.3) Электронная эскалация (в процессе реализации)
- 10.4) Мультиформы печати
- 10.5) Отправки писем с прикреплениями (атачментами) и без, в т.ч. с фидбэком
- 10.6) Наследование прикреплений (атачментов) из юзертаски в юзертаску
####Controller
@Controller
@RequestMapping(value = "/test")
public class ActivitiRestTestController {
private static final Logger log = Logger.getLogger(ActivitiRestTestController .class);
@Autowired
private TestEntityDao testEntityDao;
//1
@RequestMapping(value = "/doSomething", method = RequestMethod.GET)
public
@ResponseBody
void test(){
log.info("do smth");
testEntityDao.doSomething();
}
//2
@RequestMapping(value = "/setEntity", method = RequestMethod.GET)
public
@ResponseBody
Entity setEntity(
@RequestParam(value = "nID", required = false) Long nID ,
@RequestParam(value = "sName") String sName)
throws ActivitiRestException {
try {
return testEntityDao.saveOrUpdate(nID, sName);
} catch (Exception e){
throw new ActivitiRestException("ex in controller!", e);
}
}
//3
@RequestMapping(value = "/getEscalationRuleFunction", method = RequestMethod.GET)
public
ResponseEntity<Entity> getEntity(
@RequestParam(value = "nID") Long nID) throws ActivitiRestException {
Entity entity = testEntityDao.getById(nID);
if (entity == null) {
throw new ActivitiRestException(
ActivitiExceptionController.BUSINESS_ERROR_CODE,
"Record not found. No such Entity with nID=" + nID,
HttpStatus.FORBIDDEN);
}
return new ResponseEntity<>(entity, HttpStatus.OK);
}
}
todo:
- detailed description of controller
- description of exceptions
- description 2-3 variants
####spring-context.xml:
<bean id="testEntityDao" class="package-path.TestEntityDaoImpl">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
todo:
- where placed
####DAO
interface:
public interface TestEntityDao extends EntityDao<Entity> {
}
implementation:
public class TestEntityDaoImpl extends AbstractEntityDao<Entity>
implements TestEntityDao {
protected TestEntityDaoImpl() {
super(Entity.class);
}
}
todo:
- description
- description for "basic" dao (after refactoring)
####Entity:
@javax.persistence.Entity
public class EscalationRule extends Entity {
/** description */
@JsonProperty(value="sFieldName")
@Column
private String sFieldName;
//other fields
//setters and getters for all fields
}
todo:
- добавить готовый код на гитхабе, вместо копипаста (или как дополнение, примеры классов). и в основном - тезисно. типа:
- контроллер называем по названию корневой сущности, например SubjectController , для SubjectOrgan... и т.д.
- все сетері делаем одновременно апдейтерами, начиная название с set
- набор основных методов сущности делаем на базе класса...
- в случае єксепшина всегда возвращаем JSON-овский обьект с ошибкой, -!! посмотреть, можно ли уменьшить шрифт для примеров кода
туду: описать liquibase
###2.1) правила добавления "чанджсетов" для liquibase ↑Up//todo
###2.2) использование файлов "лоадеров данных" (/data/*) для liquibase↑Up//todo
###3) использование hibernate и базовых сущностей↑Up//todo
###4) использование queryloader-а (для хранения SQL-запросов)↑Up//todo
###5) где хранятся БП, и как учитываются подпапки beta и test↑Up//todo
###6) где хранятся контексты и проперти и как они наследуются проектами↑Up//todo
###7) использование маркированных переменных ↑Up//todo
###8) папка с шаблонами: /pattern/* (шаблоны для форм печати, шаблоны для писем и т.д.)↑Up//todo
###9) Методы авторизации (basic-authorization)↑Up//todo
###10) Информация и инструкция к используемым модулям↑Up//todo
###10.1) Электронная очередь↑Up//todo
###10.2) Электронные платежи (Liqpay), в т.ч. с отсылкой "кнопки оплаты" письмом↑Up//todo
###10.3) Электронная эскалация↑Up//todo
###10.4) Мультиформы печати↑Up//todo
###10.5) Отправки писем с прикреплениями (атачментами) и без, в т.ч. с фидбэком↑Up//todo
###10.6) Наследование прикреплений (атачментов) из юзертаски в юзертаску↑Up//todo