Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 从数据库中提取图表_Jsf_Jpa_Primefaces_Charts_Ejb - Fatal编程技术网

Jsf 从数据库中提取图表

Jsf 从数据库中提取图表,jsf,jpa,primefaces,charts,ejb,Jsf,Jpa,Primefaces,Charts,Ejb,我已经有了一个crudwebapp(JSF+EJB+JPA),我正在尝试开发一个chartBean类,以便在视图层中使用它。 要呈现的数据(通过Primefaces-4条形图)应从数据库中读取 在图表中,我有两个图表系列要显示: chartSeries1:employeeGoal->下面Orc实体类中映射的'valor'浮动列 chartSeries2:EmployeeCompleted->下面的hr_Capacity 30h实体类中映射的'RealizationDO'整数列 X轴应显示小时

我已经有了一个crudwebapp(JSF+EJB+JPA),我正在尝试开发一个chartBean类,以便在视图层中使用它。 要呈现的数据(通过Primefaces-4条形图)应从数据库中读取

在图表中,我有两个图表系列要显示:

  • chartSeries1:employeeGoal->下面Orc实体类中映射的'valor'浮动列
  • chartSeries2:EmployeeCompleted->下面的hr_Capacity 30h实体类中映射的'RealizationDO'整数列
X轴应显示小时数(基于上述“chartSeries2”值)

Y轴应显示employeeName(以下hr\U Capacity 30H实体类中的“nome”字符串字段)

有人知道如何开发下面的createCartesianChartModel()方法以用于jsf页面吗

ChartBean类:

//imports ommited

@ManagedBean
@RequestScoped
public class hrCapacitChart {

    private Map<Integer, Map<String, Number>> HrCapacitFuncis = new HashMap<Integer, Map<String, Number>>();
    private double totalHoras;
    private CartesianChartModel cartesianChartModel;

    @EJB
    private HrCapacit30hFacade hcf;

    public hrCapacitChart() {
    }

    @PostConstruct
    private void initialize() {
        cartesianChartModel = new CartesianChartModel();
        createCartesianChartModel();
    }

    public CartesianChartModel getCartesianChartModel() { 
        return cartesianChartModel;
    }

    private void createCartesianChartModel() { 
        List<HrCapacit30h> hrCapacit30h = hcf.findAll();
    // THIS IS THE METHOD/(Managed Bean property) TO BE DEVELOPED
    }
}
实体Orc类(与chartSeries1相关/参见上述说明):

//导入ommited
@实体
@表(name=“orc”,catalog=“帝亚吉欧”,schema=“atb”)
@XmlRootElement
@命名查询({
@NamedQuery(name=“Orc.findAll”,query=“从Orc o中选择o”),
@NamedQuery(name=“Orc.findById”,query=“从Orc o中选择o,其中o.id=:id”),
@NamedQuery(name=“Orc.findByNomeItem”,query=“从Orc o中选择o,其中o.nomeItem=:nomeItem”),
@NamedQuery(name=“Orc.findByDescItem”,query=“从Orc o中选择o,其中o.descItem=:descItem”),
@NamedQuery(name=“Orc.findByValor”,query=“从Orc o中选择o,其中o.valor=:valor”),
@NamedQuery(name=“Orc.findByDtRef”,query=“从Orc o中选择o,其中o.dtRef=:dtRef”)}
公共类Orc实现可序列化{
私有静态最终长serialVersionUID=1L;
@身份证
@基本(可选=假)
@NotNull
@列(name=“id”)
私有整数id;
@尺寸(最大值=100)
@列(name=“NomeItem”)
私人物品;
@尺寸(最大值=255)
@列(name=“DescItem”)
私有字符串描述项;
//@Max(value=?)@Min(value=?)//对已知的十进制范围值强制执行字段验证
@列(name=“valor”)
私人双重英勇;
@列(name=“DtRef”)
@时态(TemporalType.TIMESTAMP)
私人日期dtRef;
@OneToMany(mappedBy=“idOrc”)
私人收藏HR30H收藏;
//getter/setter/equals/hashCode ommited
}
EJB(抽象外观):

//导入ommited
公共抽象类AbstractFacade{
私有类实体类;
公共抽象外观(类entityClass){
this.entityClass=entityClass;
}
受保护的抽象EntityManager getEntityManager();
公共无效创建(T实体){
getEntityManager().persist(实体);
}
公共无效编辑(T实体){
getEntityManager().merge(实体);
}
公共无效删除(T实体){
getEntityManager().remove(getEntityManager().merge(entity));
}
公共找不到(对象id){
返回getEntityManager().find(entityClass,id);
}
公共列表findAll(){
javax.persistence.CriteriaQuery cq=getEntityManager().getCriteriaBuilder().createQuery();
cq.select(cq.from(entityClass));
返回getEntityManager().createQuery(cq.getResultList();
}
公共列表findRange(int[]范围){
javax.persistence.CriteriaQuery cq=getEntityManager().getCriteriaBuilder().createQuery();
cq.select(cq.from(entityClass));
javax.persistence.Query q=getEntityManager().createQuery(cq);
q、 setMaxResults(范围[1]-范围[0]+1);
q、 setFirstResult(范围[0]);
返回q.getResultList();
}
公共整数计数(){
javax.persistence.CriteriaQuery cq=getEntityManager().getCriteriaBuilder().createQuery();
javax.persistence.criteria.Root rt=cq.from(entityClass);
选择(getEntityManager().getCriteriaBuilder().count(rt));
javax.persistence.Query q=getEntityManager().createQuery(cq);
返回((长)q.getSingleResult()).intValue();
}
}
hr_电容30H EJB外观:

//imports ommited

@Stateless
public class HrCapacit30hFacade extends AbstractFacade<HrCapacit30h> {
    @PersistenceContext(unitName = "atb-hrCapacit30PU")
    private EntityManager em;

    @Override
    protected EntityManager getEntityManager() {
        return em;
    }

    public HrCapacit30hFacade() {
        super(HrCapacit30h.class);
    }

}
//imports ommited

@Stateless
public class OrcFacade extends AbstractFacade<Orc> {
    @PersistenceContext(unitName = "atb-hrCapacit30PU")
    private EntityManager em;

    @Override
    protected EntityManager getEntityManager() {
        return em;
    }

    public OrcFacade() {
        super(Orc.class);
    }

}
//导入ommited
@无国籍
公共类HRHfacade扩展了AbstractFacade{
@PersistenceContext(unitName=“atb-hrcapacity30pu”)
私人实体管理者;
@凌驾
受保护的EntityManager getEntityManager(){
返回em;
}
公共HRHFACADE(){
超级(HR30小时级);
}
}
Orc EJB外观:

//imports ommited

@Stateless
public class HrCapacit30hFacade extends AbstractFacade<HrCapacit30h> {
    @PersistenceContext(unitName = "atb-hrCapacit30PU")
    private EntityManager em;

    @Override
    protected EntityManager getEntityManager() {
        return em;
    }

    public HrCapacit30hFacade() {
        super(HrCapacit30h.class);
    }

}
//imports ommited

@Stateless
public class OrcFacade extends AbstractFacade<Orc> {
    @PersistenceContext(unitName = "atb-hrCapacit30PU")
    private EntityManager em;

    @Override
    protected EntityManager getEntityManager() {
        return em;
    }

    public OrcFacade() {
        super(Orc.class);
    }

}
//导入ommited
@无国籍
公共类Facade扩展了AbstractFacade{
@PersistenceContext(unitName=“atb-hrcapacity30pu”)
私人实体管理者;
@凌驾
受保护的EntityManager getEntityManager(){
返回em;
}
公共建筑立面(){
超级(兽人级);
}
}

提前感谢。

您需要创建一个ChartSeries(对于类别图表)或LineChartSeries(对于线性图表)对象,用您的值填充它,最后将该对象添加到笛卡尔模型中。就这些

编辑:

创建并初始化两个ChartSeries对象。然后在遍历列表时填充它们。像这样的方法应该会奏效:

ChartSeries a = new ChartSeries();
ChartSeries b = new ChartSeries();
HrCapacit30h tmp = null;

for(int i =0; i<hrCapacit30h.size();i++){
tmp=hrCapacit30h.get(i);
a.set(tmp.getRealizado(), tmp.getNome());
b.set(tmp.getOcr().getValor(), tmp.getNome());
}

cartesianChartModel.addSeries(a);
cartesianChartModel.addSeries(b);
ChartSeries a=新的ChartSeries();
ChartSeries b=新的ChartSeries();
HR30小时tmp=零;

对于(int i=0;i经过长时间研究后:

/**
 *
 * @author jMarcel
 */
@ManagedBean
@RequestScoped
public class ChartBean {

public ChartBean() {
}

private final Map<Integer, Map<String, Number>> HorasRealizadasPorFunci = new HashMap<>();
private final Map<Integer, Map<String, Number>> HorasOrcadasPorFunci = new HashMap<>();
private CartesianChartModel cartesianChartModel;

@EJB
private OrcFacade of;

@PostConstruct
private void initialize() {
    cartesianChartModel = new CartesianChartModel();
    createCartesianChartModel();
}

private void createCartesianChartModel() {
    List<Orc> orcado = of.findAll();
    List<Integer> orcadoList = new ArrayList<>();
    List<Integer> realizadoList = new ArrayList<>();

    //rlz Series
    for (Orc o : orcado) {
        int horasRlz = 0;
        for (HrCapacit30h r : o.getHrCapacit30hCollection()) {
            horasRlz = r.getRealizado();
            addOrUpdateRlz(r.getHrCapacit30hPK().getMatricula(), r.getNome(), horasRlz);
            realizadoList.add(r.getHrCapacit30hPK().getMatricula());
        }
    }

    //orc Series
    for (Orc o : orcado) {
        int horasOrc = 0;
        for (HrCapacit30h r : o.getHrCapacit30hCollection()) {
            horasOrc = r.getIdOrc().getValor().intValue();
            addOrUpdateOrc(r.getHrCapacit30hPK().getMatricula(), r.getNome(), horasOrc);
            orcadoList.add(r.getHrCapacit30hPK().getMatricula());
        }
    }

    Map<Object, Number> orcMap = new HashMap<>();
    Map<Object, Number> rlzMap = new HashMap<>();

    for (Integer i : realizadoList) {
        populateMap(rlzMap, HorasRealizadasPorFunci.get(i));
    }

    for (Integer i : orcadoList) {
        populateMap(orcMap, HorasOrcadasPorFunci.get(i));
    }

    ChartSeries orcadoSeries = new ChartSeries("Orçado");
    orcadoSeries.setData(orcMap);
    ChartSeries realizadoSeries = new ChartSeries("Realizado");
    realizadoSeries.setData(rlzMap);
    cartesianChartModel.addSeries(orcadoSeries);
    cartesianChartModel.addSeries(realizadoSeries);

}

private void addOrUpdateRlz(Integer matricula, String funci, Number horas) {
    Map<String, Number> map = HorasRealizadasPorFunci.get(matricula);
    if (map == null) {
        map = new HashMap<>();
        HorasRealizadasPorFunci.put(matricula, map);
    }
    Number n = map.get(funci);
    if (n == null) {
        map.put(funci.toUpperCase(), horas);
    } else {
        map.put(funci.toUpperCase(), horas.intValue());
    }
}

private void addOrUpdateOrc(Integer matricula, String funci, Number horas) {
    Map<String, Number> map = HorasOrcadasPorFunci.get(matricula);
    if (map == null) {
        map = new HashMap<>();
        HorasOrcadasPorFunci.put(matricula, map);
    }
    Number n = map.get(funci);
    if (n == null) {
        map.put(funci.toUpperCase(), horas);
    } else {
        map.put(funci.toUpperCase(), horas.intValue());
    }
}

private void populateMap(Map<Object, Number> map, Map<String, Number> data) {
    if (data == null) {
        return;
    }
    for (String key : data.keySet()) {
        Number n = map.get((Object) key);
        if (n == null) {
            map.put((Object) key, data.get(key));
        } else {
            map.put((Object) key, n.intValue() + data.get(key).intValue());
        }
    }
}

public CartesianChartModel getCartesianChartModel() {
    return cartesianChartModel;
}

public void setCartesianChartModel(CartesianChartModel cartesianChartModel) {
    this.cartesianChartModel = cartesianChartModel;
}
}
/**
*
*@作者jMarcel
*/
@ManagedBean
@请求范围
公共类ChartBean{
公共ChartBean(){
}
私有最终映射HorasRealizadasPorFunci=新HashMap();
私有最终映射HorasOrcadasPorFunci=新HashMap();
私人卡特尔夏令营模式卡特尔夏令营模式;
@EJB
私人住宅;
@施工后
私有void初始化(){
cartesianChartModel=新的cartesianChartModel();
createCartesianChartModel();
}
私有void createCartesianChartModel(){
List orcado=of.findAll();
List或cadolist=new ArrayList();
List RealizationList=new ArrayList();
//rlz-Ser
ChartSeries a = new ChartSeries();
ChartSeries b = new ChartSeries();
HrCapacit30h tmp = null;

for(int i =0; i<hrCapacit30h.size();i++){
tmp=hrCapacit30h.get(i);
a.set(tmp.getRealizado(), tmp.getNome());
b.set(tmp.getOcr().getValor(), tmp.getNome());
}

cartesianChartModel.addSeries(a);
cartesianChartModel.addSeries(b);
/**
 *
 * @author jMarcel
 */
@ManagedBean
@RequestScoped
public class ChartBean {

public ChartBean() {
}

private final Map<Integer, Map<String, Number>> HorasRealizadasPorFunci = new HashMap<>();
private final Map<Integer, Map<String, Number>> HorasOrcadasPorFunci = new HashMap<>();
private CartesianChartModel cartesianChartModel;

@EJB
private OrcFacade of;

@PostConstruct
private void initialize() {
    cartesianChartModel = new CartesianChartModel();
    createCartesianChartModel();
}

private void createCartesianChartModel() {
    List<Orc> orcado = of.findAll();
    List<Integer> orcadoList = new ArrayList<>();
    List<Integer> realizadoList = new ArrayList<>();

    //rlz Series
    for (Orc o : orcado) {
        int horasRlz = 0;
        for (HrCapacit30h r : o.getHrCapacit30hCollection()) {
            horasRlz = r.getRealizado();
            addOrUpdateRlz(r.getHrCapacit30hPK().getMatricula(), r.getNome(), horasRlz);
            realizadoList.add(r.getHrCapacit30hPK().getMatricula());
        }
    }

    //orc Series
    for (Orc o : orcado) {
        int horasOrc = 0;
        for (HrCapacit30h r : o.getHrCapacit30hCollection()) {
            horasOrc = r.getIdOrc().getValor().intValue();
            addOrUpdateOrc(r.getHrCapacit30hPK().getMatricula(), r.getNome(), horasOrc);
            orcadoList.add(r.getHrCapacit30hPK().getMatricula());
        }
    }

    Map<Object, Number> orcMap = new HashMap<>();
    Map<Object, Number> rlzMap = new HashMap<>();

    for (Integer i : realizadoList) {
        populateMap(rlzMap, HorasRealizadasPorFunci.get(i));
    }

    for (Integer i : orcadoList) {
        populateMap(orcMap, HorasOrcadasPorFunci.get(i));
    }

    ChartSeries orcadoSeries = new ChartSeries("Orçado");
    orcadoSeries.setData(orcMap);
    ChartSeries realizadoSeries = new ChartSeries("Realizado");
    realizadoSeries.setData(rlzMap);
    cartesianChartModel.addSeries(orcadoSeries);
    cartesianChartModel.addSeries(realizadoSeries);

}

private void addOrUpdateRlz(Integer matricula, String funci, Number horas) {
    Map<String, Number> map = HorasRealizadasPorFunci.get(matricula);
    if (map == null) {
        map = new HashMap<>();
        HorasRealizadasPorFunci.put(matricula, map);
    }
    Number n = map.get(funci);
    if (n == null) {
        map.put(funci.toUpperCase(), horas);
    } else {
        map.put(funci.toUpperCase(), horas.intValue());
    }
}

private void addOrUpdateOrc(Integer matricula, String funci, Number horas) {
    Map<String, Number> map = HorasOrcadasPorFunci.get(matricula);
    if (map == null) {
        map = new HashMap<>();
        HorasOrcadasPorFunci.put(matricula, map);
    }
    Number n = map.get(funci);
    if (n == null) {
        map.put(funci.toUpperCase(), horas);
    } else {
        map.put(funci.toUpperCase(), horas.intValue());
    }
}

private void populateMap(Map<Object, Number> map, Map<String, Number> data) {
    if (data == null) {
        return;
    }
    for (String key : data.keySet()) {
        Number n = map.get((Object) key);
        if (n == null) {
            map.put((Object) key, data.get(key));
        } else {
            map.put((Object) key, n.intValue() + data.get(key).intValue());
        }
    }
}

public CartesianChartModel getCartesianChartModel() {
    return cartesianChartModel;
}

public void setCartesianChartModel(CartesianChartModel cartesianChartModel) {
    this.cartesianChartModel = cartesianChartModel;
}
}