Project Standarts (java) - LamronNu/i GitHub Wiki

##Project Standarts (java)

Contents

###1) Стандарты создания контроллера с сервисами в нем↑Up

####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-овский обьект с ошибкой, -!! посмотреть, можно ли уменьшить шрифт для примеров кода
### 2) использование liquibase↑Up

туду: описать 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

⚠️ **GitHub.com Fallback** ⚠️