Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Caused by: java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to fr.alteca.outilindicateurs.entityRedmine.Issues
- at fr.alteca.outilindicateurs.controller.IssuesRESTController.init(IssuesRESTController.java:68)
- at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
- at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
- at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
- at java.lang.reflect.Method.invoke(Method.java:498)
- at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:365)
- at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:310)
- at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:133)
- ... 44 more
- SELECT issues.id,
- max(CASE WHEN custom_fields.name='Date de résolution'
- THEN custom_values.value
- ELSE '-'
- END) AS date_resolution ,
- max(CASE WHEN custom_fields.name='Date d'ouverture'
- THEN custom_values.value
- ELSE '-'
- END ) AS date_ouverture
- FROM redmine_tma_ibp.issues
- join custom_values
- on issues.id = custom_values.customized_id
- join custom_fields
- on custom_values.custom_field_id = custom_fields.id
- join enumerations
- on enumerations.id=issues.priority_id
- where (enumerations.type="IssuePriority" and (enumerations.position=1 or enumerations.position=2))
- and (status_id=3 or status_id=5)
- and (custom_fields.name = "Date d'ouverture" or custom_fields.name="Date de résolution")
- and str_to_date(custom_values.value, '%d/%m/%Y %H:%i') > date('2016-01-01')
- group by issues.id
- public static String GET_RECORDS_FOR_M1 =
- "Select i, max(case when cf.name=:date_denom then cv.value else null end) as date_ouverture FROM Issues i, CustomValues cv, CustomFields cf, Enumerations e "
- + "join fetch i.values "
- + "where i.id=cv.issue "
- + "and cv.customFields=cf.id "
- + "and e.id=i.priority "
- + "and (e.type=:priority and (e.position=:position1 or e.position=:position2)) "
- + "and (i.issueStatus.id=:status1 or i.issueStatus.id=:status2) "
- + "and cf.name = :date_denom "
- + "and str_to_date(cv.value, :date_format) > date(:date_ouverture)"
- + "and i.projects.name=:pole "
- //+ "and :value member of i.values "
- + "group by i.id";
- @RestController
- @RequestMapping("/issues")
- public class IssuesRESTController extends GenericRestController<Issues> {
- private List<Issues> listeM1;
- private List<Issues> trashBin;
- @Autowired
- IssuesRepository issuesRepository;
- @Autowired
- DataM1Repository dataM1Repository;
- @Autowired
- AuteurRepository auteurRepository;
- @Autowired
- PoleRepository poleRepository;
- @Autowired
- public IssuesRESTController(IssuesRepository repository, DataM1Repository dataM1Repository, AuteurRepository auteurRepository, PoleRepository poleRepository) {
- super(repository);
- }
- @PostConstruct
- public void init() {
- Param.poles=new HashMap<>();
- int i=0;
- for(String s : issuesRepository.getPolesNames()) {
- Param.poles.put(i, s);
- i++;
- }
- listeM1= new ArrayList<>();
- trashBin = new ArrayList<>();
- listeM1 = issuesRepository.getM1Issues();
- System.out.println(listeM1.size()+" Enregistrements récupérés dans la variable listeM1");
- /**
- * On regarde si les tuples remontés sont déjà présent dans la base,
- * si oui, on les enlève de la liste à traiter.
- */
- System.out.println(listeM1.get(0).toString());
- for(Issues issue : listeM1) {
- for(DataM1 d : dataM1Repository.list()) {
- if(issue.getId()==d.getId_ticket()) {
- System.out.println("Ticket trouvé correspondant au tuple"+issue + "n suppression du tuple de la liste à traiter");
- trashBin.add(issue);
- };
- }
- }
- for (Issues issue : trashBin) { // on évite java-util concurrentmodificationexception
- listeM1.remove(issue);
- }
- trashBin.clear();
- /**
- * On crée les tickets manquants, les poles et les auteurs suivant le besoin
- */
- for(Issues issue : listeM1) {
- System.out.println("Création dans la table outil des tickets manquants");
- DataM1 ticket = new DataM1();
- ticket.setId(Integer.SIZE);
- ticket.setId_ticket(issue.getId());
- System.out.println("*********n Ticket : "+issue.getId()+"n**********");
- System.out.println("Recherche l'auteur "+ issue.getAuthor().getLastname()+" "+issue.getAuthor().getFirstname()+" dans la base ...");
- System.out.println(issue.getValues());
- try {
- Auteur a = auteurRepository.findbyName(issue.getAuthor().getLastname(), issue.getAuthor().getFirstname());
- System.out.println("Auteur trouvé :"+a.getNom() + " "+a.getPrenom());
- ticket.setAuteur(a);
- }catch(NullPointerException e){
- System.out.println("Cet auteur n'est pas en base .. création ...");
- ticket.setAuteur(new Auteur(issue.getAuthor().getLastname(), issue.getAuthor().getFirstname()));
- }
- System.out.println("Recherche du pole "+issue.getProjects().getName()+" dans la base ...");
- try {
- Pole p = poleRepository.findbyName(issue.getProjects().getName());
- System.out.println("Pole trouvé : "+p.getNom_pole());
- ticket.setPole(p);
- }catch(NullPointerException e) {
- System.out.println("Ce pole n'est pas en base... création...");
- ticket.setPole(new Pole(issue.getProjects().getName()));
- }
- System.out.println("Création du ticket...");
- dataM1Repository.create(ticket);
- System.out.println("Ticket crée");
- }
- }
- @Override
- @RequestMapping("/all")
- public ResponseEntity<List<Issues>> list(){
- List<Issues> list = issuesRepository.getAll();
- return new ResponseEntity<List<Issues>> (list, HttpStatus.OK);
- }
- @RequestMapping("/M1/list")
- public ResponseEntity<List<Issues>> listM1(){
- List<Issues> list = issuesRepository.getM1Issues();
- return new ResponseEntity<List<Issues>> (list, HttpStatus.OK);
- }
- @RequestMapping("/M1/count")
- public ResponseEntity<Long> countM1(){
- Long nbIssues = issuesRepository.countM1Issues();
- return new ResponseEntity<Long>(nbIssues, HttpStatus.OK);
- }
- @RequestMapping("/M1/poles") // recherche la liste des poles dans la base
- public ResponseEntity<List<String>> getPolesNames(){
- List<String> poles = issuesRepository.getPolesNames();
- return new ResponseEntity<List<String>>(poles, HttpStatus.OK);
- }
- @RequestMapping("/M1/pole")
- public ResponseEntity<List<Issues>> getPoleByName(@RequestParam(value="pole") int polekey){
- List<Issues> poles = issuesRepository.getPoleByName(polekey);
- return new ResponseEntity<List<Issues>>(poles, HttpStatus.OK);
- }
- @RequestMapping("/M1/pole/count")
- public ResponseEntity<Long> countPoleByName(@RequestParam(value="pole") int polekey){
- Long poles = issuesRepository.CountPoleByName(polekey);
- return new ResponseEntity<Long>(poles, HttpStatus.OK);
- }
- @RequestMapping("/M1/pole/count/all")
- public ResponseEntity<HashMap<String, Long>> getAllInformationOnPoles(){
- HashMap<String, Long> tabl = new HashMap<>();
- int i=0;
- for(String s :issuesRepository.getPolesNames()) {
- tabl.put(Param.poles.get(i), issuesRepository.CountPoleByName(i));
- i++;
- }
- return new ResponseEntity<HashMap<String, Long>>(tabl, HttpStatus.OK);
- }
- @RequestMapping("/M1/pole/count/red")
- public ResponseEntity<HashMap<String, Long>> getAllRedInformationOnPoles(){
- HashMap<String, Long> tabl = new HashMap<>();
- int i=0;
- for(String s :issuesRepository.getPolesNames()) {
- tabl.put(Param.poles.get(i), issuesRepository.CountRedPoleByName(i));
- i++;
- }
- return new ResponseEntity<HashMap<String, Long>>(tabl, HttpStatus.OK);
- }
- @RequestMapping("/test/issue")
- public ResponseEntity<Issues> listIssueFields(@RequestParam(value="issue") int id_issue){
- Issues list = issuesRepository.getIssueById(id_issue);
- return new ResponseEntity<Issues>(list, HttpStatus.OK);
- }
- }
- @Entity
- @Table(name = "issues")
- public class Issues {
- public Issues() {}
- /*
- * Primary key
- */
- @Id
- @Column(name = "id", unique = true, nullable = false)
- private int id;
- /*
- * Foreign keys
- */
- @JoinColumn(name = "project_id")
- @ManyToOne(targetEntity = Projects.class)
- private Projects projects;
- @JoinColumn(name = "status_id")
- @ManyToOne(targetEntity = IssueStatuses.class)
- private IssueStatuses issueStatus;
- @JoinColumn(name = "author_id", referencedColumnName = "id")
- @ManyToOne(targetEntity = Users.class)
- private Users author;
- @JoinColumn(name = "priority_id")
- @ManyToOne(targetEntity = Enumerations.class)
- private Enumerations priority;
- /*
- * Fields
- */
- @Column(name = "subject", nullable = false)
- private String subject;
- @Column(name = "description", nullable = true)
- private String description;
- @OneToMany(mappedBy = "issue", targetEntity = CustomValues.class, fetch = FetchType.LAZY)
- private List<CustomValues> values;
- @Transient
- private Map<CustomFields, String> mapValeurs;
- @Transient
- private IssueStatuses status;
- //getters & setters
Add Comment
Please, Sign In to add comment