Get child hierarchy path till parent in java -
i have scenario child hierarchy structure of field till parent doing field level validations. can provide solution.
pojo classes
student.java
package com.poc.next.validations; import java.util.arraylist; import java.util.list; public class student { private string studentname; private list<subject> subjects; public string getstudentname() { return studentname; } public void setstudentname(string studentname) { this.studentname = studentname; } public list<subject> getsubjects() { if (subjects == null) { return new arraylist<>(); } return subjects; } public void setsubjects(list<subject> subjects) { this.subjects = subjects; } } subject.java
package com.poc.next.validations; import java.util.arraylist; import java.util.list; public class subject { private string subjectname; private list<revisionmarks> revisionmarks; public string getsubjectname() { return subjectname; } public void setsubjectname(string subjectname) { this.subjectname = subjectname; } public list<revisionmarks> getrevisionmarks() { if (revisionmarks == null) { return new arraylist<>(); } return revisionmarks; } public void setrevisionmarks(list<revisionmarks> revisionmarks) { this.revisionmarks = revisionmarks; } } revisionmarks.java
package com.poc.next.validations; public class revisionmarks { private integer mark; private string revision; public integer getmark() { return mark; } public void setmark(integer mark) { this.mark = mark; } public string getrevision() { return revision; } public void setrevision(string revision) { this.revision = revision; } } now adding validation check whether given mark in revisionmarks class in valid or not. if equal 0 have add error dto , send ui. challenge here have provide field name dynamic in hierarchy "subjects[0].revisionmarks[0].mark".
main class revisionvalidation.java
package com.poc.next.validations; import java.util.arraylist; import java.util.iterator; import java.util.list; public class revisionvalidation { public static void main(string[] args) { student student = populatestudentdata(); iterator<subject> iterator = student.getsubjects().iterator(); while (iterator.hasnext()) { subject subject = (subject) iterator.next(); revisionmarks revisionmarks = subject.getrevisionmarks().get(0); system.out.println(revisionmarks.getmark()); if (revisionmarks.getmark() == 0) { errordto errordto = new errordto(true, "invalid marks", "error", "subjects[0].revisionmarks[0].mark", "invalid_mark"); system.out.println(errordto); } } } private static student populatestudentdata() { list<revisionmarks> revisionmarks = new arraylist<>(); revisionmarks revisionmark = new revisionmarks(); revisionmark.setmark(0); revisionmark.setrevision("test 1"); revisionmarks.add(revisionmark); list<subject> subjects = new arraylist<>(); subject subject = new subject(); subject.setsubjectname("cs"); subject.setrevisionmarks(revisionmarks); subjects.add(subject); student student = new student(); student.setstudentname("sample"); student.setsubjects(subjects); return student; } } how can dynamically create fieldpath "subjects[0].revisionmarks[0].mark". suggestions welcome. in advance.
use counter:
int counter = 0; iterator<subject> iterator = student.getsubjects().iterator(); while (iterator.hasnext()) { subject subject = (subject) iterator.next(); revisionmarks revisionmarks = subject.getrevisionmarks().get(0); system.out.println(revisionmarks.getmark()); if (revisionmarks.getmark() == 0) { errordto errordto = new errordto(true, "invalid marks", "error", "subjects[" + counter + "].revisionmarks[0].mark", "invalid_mark"); system.out.println(errordto); } ++counter; }
Comments
Post a Comment