# generator-demoiselle

> Gerador Demoiselle 3.0 JEE7 com Angular2

Latest version **3.0.0** (published 2018-06-11) · MIT license · 0 weekly downloads

## Install

```sh
npm install generator-demoiselle
pnpm add generator-demoiselle
yarn add generator-demoiselle
bun add generator-demoiselle
```

## Health

**Score 25/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; large bundle.

Negative: abandoned.

## Facts

| | |
|---|---|
| Version | 3.0.0 |
| Published | 2018-06-11 |
| First published | 2016-05-17 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 15 |
| Unpacked size | 16.9 MB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 12 |
| Maintainers | demoiselle |
| Keywords | Demoiselle, JEE7, Java, Angular, Swagger, WebSocket, yeoman-generator |

## Links

- npm: https://www.npmjs.com/package/generator-demoiselle
- Repository: https://github.com/demoiselle/generator-demoiselle
- Issues: https://github.com/demoiselle/generator-demoiselle/issues
- npm.io page: https://npm.io/package/generator-demoiselle

## Dependencies (15)

- [chalk](https://npm.io/package/chalk.md) ^1.1.3
- [jsonq](https://npm.io/package/jsonq.md) ^1.1.0
- [yosay](https://npm.io/package/yosay.md) ^1.2.1
- [lodash](https://npm.io/package/lodash.md) ^4.17.4
- [cheerio](https://npm.io/package/cheerio.md) ^0.22.0
- [fs-extra](https://npm.io/package/fs-extra.md) ^2.0.0
- [typescript](https://npm.io/package/typescript.md) ^2.1.5
- [gulp-filter](https://npm.io/package/gulp-filter.md) ^5.0.0
- [js-beautify](https://npm.io/package/js-beautify.md) 1.6.14
- [gulp-beautify](https://npm.io/package/gulp-beautify.md) ^2.0.1
- [gulp-prettify](https://npm.io/package/gulp-prettify.md) ^0.5.0
- [swagger-parser](https://npm.io/package/swagger-parser.md) ^3.4.1
- [yeoman-generator](https://npm.io/package/yeoman-generator.md) ^2.0.5
- [typescript-formatter](https://npm.io/package/typescript-formatter.md) ^4.0.1
- [gulp-typescript-formatter](https://npm.io/package/gulp-typescript-formatter.md) ^0.1.3

## Alternatives

- [@opentelemetry/exporter-zipkin](https://npm.io/package/@opentelemetry/exporter-zipkin.md) — 14.8M weekly downloads
- [pusher-js](https://npm.io/package/pusher-js.md) — 2.0M weekly downloads
- [browserify](https://npm.io/package/browserify.md) — 1.7M weekly downloads
- [sqs-consumer](https://npm.io/package/sqs-consumer.md) — 1.7M weekly downloads
- [@sanity/eventsource](https://npm.io/package/@sanity/eventsource.md) — 930.8K weekly downloads

## Recent versions

- 3.0.0 (latest) — 2018-06-11
- 2.1.1 — 2017-12-19
- 2.1.0 — 2017-12-14
- 2.0.1 — 2017-12-06
- 2.0.0 — 2017-12-04
- 1.1.3 — 2017-09-18
- 1.1.2 — 2017-09-18
- 1.1.1 — 2017-04-19
- 1.1.0 — 2017-04-19
- 1.0.0 — 2017-03-14
- 0.0.17 — 2017-03-02
- 0.0.16 — 2017-02-16
- 0.0.15 — 2017-02-13
- 0.0.14 — 2017-02-13
- 0.0.13 — 2016-07-12
- … 12 more at https://npm.io/package/generator-demoiselle/versions

## README

# generator-demoiselle [![NPM version][npm-image]](https://npmjs.org/package/generator-demoiselle) [![Join the chat at https://gitter.im/demoiselle](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/demoiselle?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [![Build Status](https://travis-ci.org/demoiselle/generator-demoiselle.svg?branch=master)](https://travis-ci.org/demoiselle/generator-demoiselle)

> Gerador para Demoiselle 3.0

Versões do Gerador (Compatibilidade com Demoiselle Frontend https://github.com/demoiselle/frontend/)
- 3.x.x para Angular 6 (Node 8+, Angular CLI 6, Demoiselle Frontend 3.x)
- 2.x.x para Angular 5 com Angular CLI (Demoiselle Frontend 2.x)
- 1.1.X para Angular 4 (Demoiselle Frontend 1.x)
- 1.0.X para Angular 2.3.0 (Demoiselle Frontend 1.x)

Utilitário para a criação da estrutura básica de um projeto, arquivos e estrutura de pastas, utilizando os padrões:
- Demoiselle 3.0
- Angular
- Swagger Spec - [OpenApis](https://openapis.org/specification)


## Requisitos

Para executar apenas o generator, você precisará da ferramenta de execução de scripts Javascript Node JS,
do gerenciador de pacotes e dependêncas npm e a ferramenta de apoio para a construção de projetos yo:
`node, npm e yo`.

A execução de projetos em Demoiselle 3.0, depende das seguintes ferramentas de software:
- para o backend: Java8, mvn
- para o frontend: node, nvm

## Instalação

O NodeJs e o npm estão disponíveis para os sistemas operacionais Linux, macOS e Windows e
podem ser obtido no site https://nodejs.org/en/, ambos são instalados com o pacote
de instalação do NodeJs.

Nas distribuições Linux baseadas em Debian a instalação pode ser feita com o comando

```bash

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh | bash

# Você deve fechar o terminal e abrir novamente

nvm install stable

npm install -g yo generator-demoiselle @angular/cli

```

## Execução


```bash
#Crie uma nova pasta onde serão mantidos os arquivos do seu novo projeto
mkdir Noticias
#Torne a nova pasta como caminho ativo do projeto
cd Noticias
# Para criar um novo projeto:
yo demoiselle
```

Eventualmente pode ser apresentada uma mesagem questionando se você deseja contibuir anonimamente com
informações, caso concorde algumas informações estatísticas sobre o desempenho da ferramenta poderão ser
enviadas para os desenvolvedores da aplicação aprimorarem a ferramenta.

O script de instalação apresentará questionamentos sobre as caracterisitica do seu projeto conforme os
seguintes passos

- Dê um nome para o seu projeto: (Informar o nome do projeto por ex: Noticias)
- Informe o package do backend: (Utilizar o padrão java para estrutura de arquivos)
- Dê um prefixo para os seus componentes: (Informar o prefixo que será usado pelos componentes Angular da sua app)
- Você quer gerar arquivos para: (Utilize as teclas de setas para alternar entre as opções, espaço para selecionar, e enter para confirmar)
- Deseja instalar as dependências (isso pode demorar alguns minutos)? (Tem que confirmar para fazer a instalação ou rodar npm install posteriormente)

Serão criados dois diretórios na pasta corrente:

- backend (contém os arquivos para o servidor de aplicação java)
- frontend (arquivos para a interface cliente)

## Executando

Você poderá executar a aplicação criada neste exemplo diretamente pelo console executando os seguintes comandos:

### Backend

```bash
cd backend
#Comando que compila a aplicação e empacota para ser executada com o servidor Wildfly
mvn clean package -Pwildfly-swarm
java -jar -Xmx128m target/SEU_PACOTE-swarm.jar
```

Se tudo ocorreu adequadamente ao acessar o endereço http://localhost:8080/ pelo seu navegador será exibida a página
com informações sobre a configuração e funcionalidades do sistema

### Frontend

```bash
cd frontend
# Instalar os módulos dependentes
npm install
# Inicia a aplicação (frontend)
npm start
```

Após os comandos será inciado um servidor http na porta 7070 e pode ser acessada utilizando o endereço http://localhost:7070/
no navegador.

### Utilizando o Eclipse

Use a opção Import do menu, selecione Maven->Existing Maven Project e clique em Next. Clique no botão Browse e localize 
a pasta backend criada nos passos anteriores, selecione o arquivo pom.xml identificado e clique em Finish.

No eclipse é possível que apareça o seguinte erro "No generator named "uuid" is defined in the persistence unit" nos arquivos
de mapeamento objeto relacional. Para resolver o problema clique em Window na bara de menu, selecione o item Preferences. Na janela
que será aberta procure pos Java Persistênce->JPA->Errors/Warnings e altere o valor do  item 
"Generator is not defined in the persistence unit" para Info ou Ignore.

## Funcionalidades

- [x] `yo demoiselle` - gera novos projetos
- [x] `yo demoiselle:add` - gera partes da aplicação
- [x] `yo demoiselle:fromSwagger` - gera partes da aplicação usando especificação Swagger
- [x] `yo demoiselle:fromEntity` - gera partes da aplicação usando as entidades java pré-existentes

```bash
# Para adicionar funcionalidades em um projeto:
yo demoiselle:add crud nome_da_nova_funcionalidade

# Para gerar entidades a partir de uma especificação Swagger
yo demoiselle:fromSwagger

# Para gerar entidades a partir da pasta de entidades java
yo demoiselle:fromEntity
```

### Adicionando um novo CRUD
No momento o comando add do gerador de código pode ser utilizado apenas para a geração de objetos necessários
em funcionalidades de mapeamento objeto-relacional. Ao executar o comando yo demoiselle:add 

```bash
yo demoiselle:add
#Alternativamente é possível passar o nome da nova funcionalidade por parâmetro
#yo demoiselle:add crud nome_da_nova_funcionalidade
```

### Criando funcionalidades a partir de classes de mapeamento objeto-relacional
Ao criar uma nova classe para mapeamento de objeto de banco de dados é o gerador de código provê uma instrução que facilita
a construção dos elementos utilizados pela aplicação como a exposição de serviços e interfaces. Caso
exista uma nova classe no pacote entity do seu projeto execute o comando:
 
```bash
yo demoiselle:fromEntity
```

Serão listadas todas as classes responsáveis pelas funcionalidades de mapeamento objeto-relacional. 
Informe se você deseja criar os arquivos para frontend, backend ou ambos e confirme com a tecla enter. 
Selecione as classes para as quais deseja gerara os arquivos necessários para uma aplicação 

### Criando funcionalidades a partir de classes de um serviço existente

O projeto Swagger oferece funcionalidades de apresentação dos serviços disponibilizados, utilizando a notação JSON 
em uma implementação RESTfull. Utilizando esta estratégia a implementação de uma ferramente de consumo de serviços
pode ser implementada sem a necessidade de conhecimentos prévios da implementação no servidor, bastando conhecer a
descrição das funcionalidades do mesmo fornecidas por um documento JSON. O papel do Swagger é semelhante ao desempenhado
pela WSDL em um servidor SOAP.

Para gerar os arquivos baseados em um documento JSON com as descrições dos serviços oferecidos basta colocar o arquivo
na pasta raiz ou subdiretório da aplicação e executar o comando:

```bash
# serão apresentados todos os arquivos nas pastas da aplicação, selecione os que deseja implementar
yo demoiselle:fromSwagger
```

Serão gerados os arquivos necessários para a implementação de uma aplicação, tanto no frontend quanto no backend, a partir 
da descrição fornecida pelo arquivo JSON.


### Frontend


Criando uma distribuição da interface para ser instalada em servidor web

```bash
npm run build
```


## Roadmap

Acompanhe pelos [milestones](https://github.com/demoiselle/generator-demoiselle/milestones) do projeto.

## License

LGPL3 © [SERPRO](http://demoiselle.io/)

[npm-image]: https://badge.fury.io/js/generator-demoiselle.svg
[npm-url]: https://npmjs.org/package/generator-demoiselle

---
_Source: https://npm.io/package/generator-demoiselle · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
