Android Firebase Database exception: not define a no-argument constructor - java

I'm receiving an error presented below:
com.google.firebase.database.DatabaseException: Class
com.example.admin.albumsviewer.Album$Info does not define a
no-argument constructor. If you are using ProGuard, make sure these
constructors are not stripped.
In fact in my model class I have declared no-argument constructors:
package com.example.admin.albumsviewer;
import java.util.ArrayList;
import java.util.List;
public class Album {
String nazwa;
String wykonawca;
String okladkaAlbumu;
String logoZespolu;
Info info;
Utwory utwory;
public String getNazwa() {
return nazwa;
}
public void setNazwa(String nazwa) {
this.nazwa = nazwa;
}
public String getWykonawca() {
return wykonawca;
}
public void setWykonawca(String wykonawca) {
this.wykonawca = wykonawca;
}
public String getOkladkaAlbumu() {
return okladkaAlbumu;
}
public void setOkladkaAlbumu(String okladkaAlbumu) {
this.okladkaAlbumu = okladkaAlbumu;
}
public String getLogoZespolu() {
return logoZespolu;
}
public void setLogoZespolu(String logoZespolu) {
this.logoZespolu = logoZespolu;
}
public Info getInfo() {
return info;
}
public void setInfo(Info info) {
this.info = info;
}
public Utwory getUtwory() {
return utwory;
}
public void setUtwory(Utwory utwory) {
this.utwory = utwory;
}
public Album(){
}
public Album(String nazwa, String wykonawca, String okladkaAlbumu, String logoZespolu, Info info, Utwory utwory) {
this.nazwa = nazwa;
this.wykonawca = wykonawca;
this.okladkaAlbumu = okladkaAlbumu;
this.logoZespolu = logoZespolu;
this.info = info;
this.utwory = utwory;
}
public class Info {
String gatunek;
int cena;
int rokWydania;
public String getGatunek() {
return gatunek;
}
public void setGatunek(String gatunek) {
this.gatunek = gatunek;
}
public int getCena() {
return cena;
}
public void setCena(int cena) {
this.cena = cena;
}
public int getRokWydania() {
return rokWydania;
}
public void setRokWydania(int rokWydania) {
this.rokWydania = rokWydania;
}
public Info() {
}
public Info(String gatunek, int cena, int rokWydania) {
this.gatunek = gatunek;
this.cena = cena;
this.rokWydania = rokWydania;
}
}
public class Utwory {
List<String> utwory;
public List<String> getUtwory() {
return utwory;
}
public void setUtwory(List<String> utwory) {
this.utwory = utwory;
}
public Utwory(){
}
public Utwory(List<String> utwory) {
this.utwory = utwory;
}
}
}
I'am quite confused how to fix that issue. Thanks in advance.

Info and Utwory shouldn't be inner classes nested inside Album. Make them independent classes instead.

Related

Retrieved data from JSON but can't Accessing Arraylist from JSONobject

I'm very new in Android and Java Programming and currently developing my skill.
now, i faced a problem with accessing Arraylist from JSONresponse.
It's just i don't know how to initiate my Variable based on Json nested object, and access it without setting it to recylerview etc.
so this is the JSON
{"kode":1,
"pesan":"Anda Berhasil Login",
"data":[{"Id_Ortu":"1","NamaLengkapOrtu":"Alpiyan
Yamin"}]}
ResponseModel class
public class ResponseModel {
private int kode;
private String pesan,sql;
private List<DataModel> data;
public String getSql() {
return sql;
}
public void setSql(String sql) {
this.sql = sql;
}
public int getKode() {
return kode;
}
public void setKode(int kode) {
this.kode = kode;
}
public String getPesan() {
return pesan;
}
public void setPesan(String pesan) {
this.pesan = pesan;
}
public List<DataModel> getData() {
return data;
}
public void setData(List<DataModel> data) {
this.data = data;
}
}
ResponseModel class
public class DataModel {
private int Id_Perizinan, Id_Ortu;
private String NamaLengkapSantri, NamaLengkapOrtu, Alasan_Izin, Tgl_Pengajuan,
Durasi_Izin, Tgl_Kembali;
public int getId_Perizinan() {
return Id_Perizinan;
}
public void setId_Perizinan(int id_Perizinan) {
Id_Perizinan = id_Perizinan;
}
public int getId_Ortu() {
return Id_Ortu;
}
public void setId_Ortu(int id_Ortu) {
Id_Ortu = id_Ortu;
}
public String getNamaLengkapSantri() {
return NamaLengkapSantri;
}
public void setNamaLengkapSantri(String namaLengkapSantri) {
NamaLengkapSantri = namaLengkapSantri;
}
public String getNamaLengkapOrtu() {
return NamaLengkapOrtu;
}
public void setNamaLengkapOrtu(String namaLengkapOrtu) {
NamaLengkapOrtu = namaLengkapOrtu;
}
public String getAlasan_Izin() {
return Alasan_Izin;
}
public void setAlasan_Izin(String alasan_Izin) {
Alasan_Izin = alasan_Izin;
}
public String getTgl_Pengajuan() {
return Tgl_Pengajuan;
}
public void setTgl_Pengajuan(String tgl_Pengajuan) {
Tgl_Pengajuan = tgl_Pengajuan;
}
public String getDurasi_Izin() {
return Durasi_Izin;
}
public void setDurasi_Izin(String durasi_Izin) {
Durasi_Izin = durasi_Izin;
}
public String getTgl_Kembali() {
return Tgl_Kembali;
}
public void setTgl_Kembali(String tgl_Kembali) {
Tgl_Kembali = tgl_Kembali;
}
and this is how I try to retrieve the data
public void loginAplikasi(){
APIRequestData apiRequestData = RetroServer.koneksiRetrofit().create(APIRequestData.class);
Call<ResponseModel> loginApp = apiRequestData.ardLogin(username,password);
loginApp.enqueue(new Callback<ResponseModel>() {
#Override
public void onResponse(Call<ResponseModel> call, Response<ResponseModel> response) {
int kode = response.body().getKode();
String pesan = response.body().getPesan();
listData = response.body().getData();
int Id_Ortu = 0;
String NamaLengkapOrtu;
alertDialog(NamaLengkapOrtu);
} else {
alertDialog(pesan);
}
}
#Override
public void onFailure(Call<ResponseModel> call, Throwable t) {
alertDialog(t.getMessage());
}
});
}
i successfully catched 'kode' and 'pesan' From JSON by using
int kode = response.body().getKode();
String pesan = response.body().getPesan();
i've declared a listData as new arraylist
List<DataModel> listData = new ArrayList<>();
however, how can i access the value of
listData = response.body().getData();
which contained array inside of data
so i can initiate variable ( NamaLengkapOrtu = listdata(arrayIndex) )
Thanks in advance.
The issue with DataModel class.
public class DataModel {
#SerializedName("Id_Ortu")
#Expose
private String idOrtu;
#SerializedName("NamaLengkapOrtu")
#Expose
private String namaLengkapOrtu;
public String getIdOrtu() {
return idOrtu;
}
public void setIdOrtu(String idOrtu) {
this.idOrtu = idOrtu;
}
public String getNamaLengkapOrtu() {
return namaLengkapOrtu;
}
public void setNamaLengkapOrtu(String namaLengkapOrtu) {
this.namaLengkapOrtu = namaLengkapOrtu;
}
}
Then you can access data as follows:
String namaLengkapOrtu = listdata.get(index).getNamaLengkapOrtu();
String idOrtu = listdata.get(index).getIdOrtu();
As your JSON response is:
{"kode":1,
"pesan":"Anda Berhasil Login",
"data":[{"Id_Ortu":"1","NamaLengkapOrtu":"Alpiyan
Yamin"}]}
Use the below annotation in your model class:
#SerializedName("data")
#Expose
Here, "data" is the key you want to get from JSON.
Try to use this ResponseModel class:
public class ResponseModel {
private int kode;
private String pesan,SQL;
#SerializedName("data")
#Expose
private List<DataModel> data;
public String getSql() {
return sql;
}
public void setSql(String sql) {
this.sql = sql;
}
public int getKode() {
return kode;
}
public void setKode(int kode) {
this.kode = kode;
}
public String getPesan() {
return pesan;
}
public void setPesan(String pesan) {
this.pesan = pesan;
}
public List<DataModel> getData() {
return data;
}
public void setData(List<DataModel> data) {
this.data = data;
}
}

Java Reflection to set each methods

I have a problem with setting up each field in my class by using the setter method.
For my Object Class i have
public class HealthDetails{
private String id;
private String name;
private String age;
private String height;
private String data0;
private String data1;
private String data2;
private String data3;
private String data4;
private String data5;
private String data6;
private String data7;
private String data8;
private String data9;
private String data10;
private String data11;
private String data12;
private String data13;
private String data14;
private String data15;
private String data16;
private String data17;
private String data18;
private String data19;
private String data20;
private String data21;
private String data22;
private String data23;
private String data24;
private String data25;
private String data26;
private String data27;
private String data28;
private String data29;
private String data30;
private String data31;
private String data32;
private String data33;
private String data34;
private String data35;
private String data36;
private String data37;
private String data38;
private String data39;
private String data40;
private String data41;
private String data42;
private String data43;
private String data44;
private String data45;
private String data46;
private String data47;
private String data48;
private String data49;
private String data50;
private String data51;
private String data52;
private String data53;
private String data54;
private String data55;
private String data56;
private String data57;
private String data58;
private String data59;
private String data60;
private String data61;
private String data62;
private String data63;
private String data64;
private String data65;
private String data66;
private String data67;
private String data68;
private String data69;
private String data70;
private String data71;
private String data72;
private String data73;
private String data74;
private String data75;
private String data76;
private String data77;
private String data78;
private String data79;
private String data80;
private String data81;
private String data82;
private String data83;
private String data84;
private String data85;
private String data86;
private String data87;
private String data88;
private String data89;
private String data90;
private String data91;
private String data92;
private String data93;
private String data94;
private String data95;
private String data96;
private String data97;
private String data98;
private String data99;
private String data100;
private String data101;
private String data102;
private String data103;
private String data104;
private String data105;
private String data106;
private String data107;
private String data108;
private String data109;
private String data110;
private String data111;
private String data112;
private String data113;
private String data114;
private String data115;
private String data116;
private String data117;
private String data118;
private String data119;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getHeight() {
return height;
}
public void setHeight(String height) {
this.height = height;
}
public String getData0() {
return data0;
}
public void setData0(String data0) {
this.data0 = data0;
}
public String getData1() {
return data1;
}
public void setData1(String data1) {
this.data1 = data1;
}
public String getData2() {
return data2;
}
public void setData2(String data2) {
this.data2 = data2;
}
public String getData3() {
return data3;
}
public void setData3(String data3) {
this.data3 = data3;
}
public String getData4() {
return data4;
}
public void setData4(String data4) {
this.data4 = data4;
}
public String getData5() {
return data5;
}
public void setData5(String data5) {
this.data5 = data5;
}
public String getData6() {
return data6;
}
public void setData6(String data6) {
this.data6 = data6;
}
public String getData7() {
return data7;
}
public void setData7(String data7) {
this.data7 = data7;
}
public String getData8() {
return data8;
}
public void setData8(String data8) {
this.data8 = data8;
}
public String getData9() {
return data9;
}
public void setData9(String data9) {
this.data9 = data9;
}
public String getData10() {
return data10;
}
public void setData10(String data10) {
this.data10 = data10;
}
public String getData11() {
return data11;
}
public void setData11(String data11) {
this.data11 = data11;
}
public String getData12() {
return data12;
}
public void setData12(String data12) {
this.data12 = data12;
}
public String getData13() {
return data13;
}
public void setData13(String data13) {
this.data13 = data13;
}
public String getData14() {
return data14;
}
public void setData14(String data14) {
this.data14 = data14;
}
public String getData15() {
return data15;
}
public void setData15(String data15) {
this.data15 = data15;
}
public String getData16() {
return data16;
}
public void setData16(String data16) {
this.data16 = data16;
}
public String getData17() {
return data17;
}
public void setData17(String data17) {
this.data17 = data17;
}
public String getData18() {
return data18;
}
public void setData18(String data18) {
this.data18 = data18;
}
public String getData19() {
return data19;
}
public void setData19(String data19) {
this.data19 = data19;
}
public String getData20() {
return data20;
}
public void setData20(String data20) {
this.data20 = data20;
}
public String getData21() {
return data21;
}
public void setData21(String data21) {
this.data21 = data21;
}
public String getData22() {
return data22;
}
public void setData22(String data22) {
this.data22 = data22;
}
public String getData23() {
return data23;
}
public void setData23(String data23) {
this.data23 = data23;
}
public String getData24() {
return data24;
}
public void setData24(String data24) {
this.data24 = data24;
}
public String getData25() {
return data25;
}
public void setData25(String data25) {
this.data25 = data25;
}
public String getData26() {
return data26;
}
public void setData26(String data26) {
this.data26 = data26;
}
public String getData27() {
return data27;
}
public void setData27(String data27) {
this.data27 = data27;
}
public String getData28() {
return data28;
}
public void setData28(String data28) {
this.data28 = data28;
}
public String getData29() {
return data29;
}
public void setData29(String data29) {
this.data29 = data29;
}
public String getData30() {
return data30;
}
public void setData30(String data30) {
this.data30 = data30;
}
public String getData31() {
return data31;
}
public void setData31(String data31) {
this.data31 = data31;
}
public String getData32() {
return data32;
}
public void setData32(String data32) {
this.data32 = data32;
}
public String getData33() {
return data33;
}
public void setData33(String data33) {
this.data33 = data33;
}
public String getData34() {
return data34;
}
public void setData34(String data34) {
this.data34 = data34;
}
public String getData35() {
return data35;
}
public void setData35(String data35) {
this.data35 = data35;
}
public String getData36() {
return data36;
}
public void setData36(String data36) {
this.data36 = data36;
}
public String getData37() {
return data37;
}
public void setData37(String data37) {
this.data37 = data37;
}
public String getData38() {
return data38;
}
public void setData38(String data38) {
this.data38 = data38;
}
public String getData39() {
return data39;
}
public void setData39(String data39) {
this.data39 = data39;
}
public String getData40() {
return data40;
}
public void setData40(String data40) {
this.data40 = data40;
}
public String getData41() {
return data41;
}
public void setData41(String data41) {
this.data41 = data41;
}
public String getData42() {
return data42;
}
public void setData42(String data42) {
this.data42 = data42;
}
public String getData43() {
return data43;
}
public void setData43(String data43) {
this.data43 = data43;
}
public String getData44() {
return data44;
}
public void setData44(String data44) {
this.data44 = data44;
}
public String getData45() {
return data45;
}
public void setData45(String data45) {
this.data45 = data45;
}
public String getData46() {
return data46;
}
public void setData46(String data46) {
this.data46 = data46;
}
public String getData47() {
return data47;
}
public void setData47(String data47) {
this.data47 = data47;
}
public String getData48() {
return data48;
}
public void setData48(String data48) {
this.data48 = data48;
}
public String getData49() {
return data49;
}
public void setData49(String data49) {
this.data49 = data49;
}
public String getData50() {
return data50;
}
public void setData50(String data50) {
this.data50 = data50;
}
public String getData51() {
return data51;
}
public void setData51(String data51) {
this.data51 = data51;
}
public String getData52() {
return data52;
}
public void setData52(String data52) {
this.data52 = data52;
}
public String getData53() {
return data53;
}
public void setData53(String data53) {
this.data53 = data53;
}
public String getData54() {
return data54;
}
public void setData54(String data54) {
this.data54 = data54;
}
public String getData55() {
return data55;
}
public void setData55(String data55) {
this.data55 = data55;
}
public String getData56() {
return data56;
}
public void setData56(String data56) {
this.data56 = data56;
}
public String getData57() {
return data57;
}
public void setData57(String data57) {
this.data57 = data57;
}
public String getData58() {
return data58;
}
public void setData58(String data58) {
this.data58 = data58;
}
public String getData59() {
return data59;
}
public void setData59(String data59) {
this.data59 = data59;
}
public String getData60() {
return data60;
}
public void setData60(String data60) {
this.data60 = data60;
}
public String getData61() {
return data61;
}
public void setData61(String data61) {
this.data61 = data61;
}
public String getData62() {
return data62;
}
public void setData62(String data62) {
this.data62 = data62;
}
public String getData63() {
return data63;
}
public void setData63(String data63) {
this.data63 = data63;
}
public String getData64() {
return data64;
}
public void setData64(String data64) {
this.data64 = data64;
}
public String getData65() {
return data65;
}
public void setData65(String data65) {
this.data65 = data65;
}
public String getData66() {
return data66;
}
public void setData66(String data66) {
this.data66 = data66;
}
public String getData67() {
return data67;
}
public void setData67(String data67) {
this.data67 = data67;
}
public String getData68() {
return data68;
}
public void setData68(String data68) {
this.data68 = data68;
}
public String getData69() {
return data69;
}
public void setData69(String data69) {
this.data69 = data69;
}
public String getData70() {
return data70;
}
public void setData70(String data70) {
this.data70 = data70;
}
public String getData71() {
return data71;
}
public void setData71(String data71) {
this.data71 = data71;
}
public String getData72() {
return data72;
}
public void setData72(String data72) {
this.data72 = data72;
}
public String getData73() {
return data73;
}
public void setData73(String data73) {
this.data73 = data73;
}
public String getData74() {
return data74;
}
public void setData74(String data74) {
this.data74 = data74;
}
public String getData75() {
return data75;
}
public void setData75(String data75) {
this.data75 = data75;
}
public String getData76() {
return data76;
}
public void setData76(String data76) {
this.data76 = data76;
}
public String getData77() {
return data77;
}
public void setData77(String data77) {
this.data77 = data77;
}
public String getData78() {
return data78;
}
public void setData78(String data78) {
this.data78 = data78;
}
public String getData79() {
return data79;
}
public void setData79(String data79) {
this.data79 = data79;
}
public String getData80() {
return data80;
}
public void setData80(String data80) {
this.data80 = data80;
}
public String getData81() {
return data81;
}
public void setData81(String data81) {
this.data81 = data81;
}
public String getData82() {
return data82;
}
public void setData82(String data82) {
this.data82 = data82;
}
public String getData83() {
return data83;
}
public void setData83(String data83) {
this.data83 = data83;
}
public String getData84() {
return data84;
}
public void setData84(String data84) {
this.data84 = data84;
}
public String getData85() {
return data85;
}
public void setData85(String data85) {
this.data85 = data85;
}
public String getData86() {
return data86;
}
public void setData86(String data86) {
this.data86 = data86;
}
public String getData87() {
return data87;
}
public void setData87(String data87) {
this.data87 = data87;
}
public String getData88() {
return data88;
}
public void setData88(String data88) {
this.data88 = data88;
}
public String getData89() {
return data89;
}
public void setData89(String data89) {
this.data89 = data89;
}
public String getData90() {
return data90;
}
public void setData90(String data90) {
this.data90 = data90;
}
public String getData91() {
return data91;
}
public void setData91(String data91) {
this.data91 = data91;
}
public String getData92() {
return data92;
}
public void setData92(String data92) {
this.data92 = data92;
}
public String getData93() {
return data93;
}
public void setData93(String data93) {
this.data93 = data93;
}
public String getData94() {
return data94;
}
public void setData94(String data94) {
this.data94 = data94;
}
public String getData95() {
return data95;
}
public void setData95(String data95) {
this.data95 = data95;
}
public String getData96() {
return data96;
}
public void setData96(String data96) {
this.data96 = data96;
}
public String getData97() {
return data97;
}
public void setData97(String data97) {
this.data97 = data97;
}
public String getData98() {
return data98;
}
public void setData98(String data98) {
this.data98 = data98;
}
public String getData99() {
return data99;
}
public void setData99(String data99) {
this.data99 = data99;
}
public String getData100() {
return data100;
}
public void setData100(String data100) {
this.data100 = data100;
}
public String getData101() {
return data101;
}
public void setData101(String data101) {
this.data101 = data101;
}
public String getData102() {
return data102;
}
public void setData102(String data102) {
this.data102 = data102;
}
public String getData103() {
return data103;
}
public void setData103(String data103) {
this.data103 = data103;
}
public String getData104() {
return data104;
}
public void setData104(String data104) {
this.data104 = data104;
}
public String getData105() {
return data105;
}
public void setData105(String data105) {
this.data105 = data105;
}
public String getData106() {
return data106;
}
public void setData106(String data106) {
this.data106 = data106;
}
public String getData107() {
return data107;
}
public void setData107(String data107) {
this.data107 = data107;
}
public String getData108() {
return data108;
}
public void setData108(String data108) {
this.data108 = data108;
}
public String getData109() {
return data109;
}
public void setData109(String data109) {
this.data109 = data109;
}
public String getData110() {
return data110;
}
public void setData110(String data110) {
this.data110 = data110;
}
public String getData111() {
return data111;
}
public void setData111(String data111) {
this.data111 = data111;
}
public String getData112() {
return data112;
}
public void setData112(String data112) {
this.data112 = data112;
}
public String getData113() {
return data113;
}
public void setData113(String data113) {
this.data113 = data113;
}
public String getData114() {
return data114;
}
public void setData114(String data114) {
this.data114 = data114;
}
public String getData115() {
return data115;
}
public void setData115(String data115) {
this.data115 = data115;
}
public String getData116() {
return data116;
}
public void setData116(String data116) {
this.data116 = data116;
}
public String getData117() {
return data117;
}
public void setData117(String data117) {
this.data117 = data117;
}
public String getData118() {
return data118;
}
public void setData118(String data118) {
this.data118 = data118;
}
public String getData119() {
return data119;
}
public void setData119(String data119) {
this.data119 = data119;
}
}
On the other hand I have a method call setListToPOJO
public class Utility{
public static void setListToPOJO(List<String> objList, HealthDetails healthDetails){
Methods[] methods = healthDetails.getClass().getDeclaredMethods();
int i = 0;
for(Method method : methods){
if(method.getName().startsWith("set"){
method.invoke(healthDetails, objList.get(i++));
}
}
//include all the try catch methods IllegalArgumentException /
//IllegalArgumentException / InvocationTargetException
}
however i caught an argumentTypeMissmatch
Any Idea how do i solve this without modifying the access Field?
this is the method use to make it work the main class
public class RunMethod{
public static void main(String[] args){
List<String> data = Arrays.asList("object0", "object1", "object2", "object3", "object4", "object5", "object6", "object7", "object8", "object9", "object10", "object11", "object12", "object13", "object14", "object15", "object16", "object17", "object18", "object19", "object20", "object21", "object22", "object23", "object24", "object25", "object26", "object27", "object28", "object29", "object30", "object31", "object32", "object33", "object34", "object35", "object36", "object37", "object38", "object39", "object40", "object41", "object42", "object43", "object44", "object45", "object46", "object47", "object48", "object49", "object50", "object51", "object52", "object53", "object54", "object55", "object56", "object57", "object58", "object59", "object60", "object61", "object62", "object63", "object64", "object65", "object66", "object67", "object68", "object69", "object70", "object71", "object72", "object73", "object74", "object75", "object76", "object77", "object78", "object79", "object80", "object81", "object82", "object83", "object84", "object85", "object86", "object87", "object88", "object89", "object90", "object91", "object92", "object93", "object94", "object95", "object96", "object97", "object98", "object99", "object100", "object101", "object102", "object103", "object104", "object105", "object106", "object107", "object108", "object109", "object110", "object111", "object112", "object113", "object114", "object115", "object116", "object117", "object118", "object119");
HealthDeatils healthDetails = new HealthDetails();
Utility.setListToPOJO(data,healthDetails);
}
}
Below is the output
Error Message (Edited):
java.lang.IllegalArgumentException: argument type mismatch
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:592)
The cause is that the parameter you passed, objList.get(i++) is not the type the method you invoke required.
modify you code to
for(Method method : methods){
String value = objList.get(i);
try {
if(method.getName().startsWith("set"){
method.invoke(healthDetails, value);
i++;
}
} catch (Exception e) {
e.printStackTrace();
System.out.println("Value is: " + value); // show which value is wrong
}
}
This would check which value type is wrong.
On the other hand, for the wrong order of methods. I suggest you change objList from List<String> to Map<String, Obj>, the key is the name of the method you want to invoke, like Id, Name. Then you invoke it by just add set in front of it.
for (Map.Entry<String, String> entry : map.entrySet())
{
Object value = entry.getValue();
Method method = healthDetails.getClass().getDeclaredMethod("set"+entry.getKey(), value.getClass());
method.invoke(healthDetails, value);
}
Your HealthDetails class have 124 properties and 124 setter methods but you are populating data list with only 120 elements causing ArrayIndexOutOfBoundsException while calling the setter methods through reflection.
If we provide arguments for all the setter methods in that list your code will work without any issue.
Below is the working modified code:
public class RunMethod {
public static void main(String[] args) {
List<String> data = Arrays.asList("id", "name", "age", "height", " object0", "object1", "object2", "object3", "object4", "object5", "object6", "object7", "object8", "object9", "object10", "object11", "object12", "object13", "object14", "object15", "object16", "object17", "object18", "object19", "object20", "object21", "object22", "object23", "object24", "object25", "object26", "object27", "object28", "object29", "object30", "object31", "object32", "object33", "object34", "object35", "object36", "object37", "object38", "object39", "object40", "object41", "object42", "object43", "object44", "object45", "object46", "object47", "object48", "object49", "object50", "object51", "object52", "object53", "object54", "object55", "object56", "object57", "object58", "object59", "object60", "object61", "object62", "object63", "object64", "object65", "object66", "object67", "object68", "object69", "object70", "object71", "object72", "object73", "object74", "object75", "object76", "object77", "object78", "object79", "object80", "object81", "object82", "object83", "object84", "object85", "object86", "object87", "object88", "object89", "object90", "object91", "object92", "object93", "object94", "object95", "object96", "object97", "object98", "object99", "object100", "object101", "object102", "object103", "object104", "object105", "object106", "object107", "object108", "object109", "object110", "object111", "object112", "object113", "object114", "object115", "object116", "object117", "object118", "object119");
HealthDetails healthDetails = new HealthDetails();
Utility.setListToPOJO(data, healthDetails);
}
}
Utility Class
public class Utility{
public static void setListToPOJO(List objList, HealthDetails healthDetails) {
System.out.println(objList.size());
Method[] methods = healthDetails.getClass().getDeclaredMethods();
System.out.println("methods array size " +methods.length);
int i = 0;
for (Method method : methods) {
if (method.getName().startsWith("set")) {
System.out.println(method.getName());
try {
method.invoke(healthDetails, objList.get(i++));
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
}
}
}
A different approach.
Currently, your code reads:
Methods[] methods = healthDetails.getClass().getDeclaredMethods();
int i = 0;
for(Method method : methods){
if(method.getName().startsWith("set"){
method.invoke(healthDetails, objList.get(i++));
}
}
The implicit assumption here is: the setter methods returned by getDeclaredMethods() are in the same order as your parameters (List<String> objList).
First of all, that assumption is wrong. There is no guaranteed order in that array.
But beyond that: when you know the order of elements in your list you simply don't need to use reflection at all.
You just do:
for (int i=0; i < objList.size(); i++) {
String parm = objList.get(i);
switch (i) {
case 0: healthDetails.setId(parm); break;
case 1: healthDetails.set...(parm); break;
and so on.
The point is, as stated multiple times: using a flat list means that you (somehow) must know in which order the arguments come in. And then you can simply use that order to determine the required setter method.
In other words: the code example you are showing implies that you do not need to use reflection to solve this problem. At all. Your idea to use reflection only buys you complexity, nothing else.
( of course: when the input would be a Map<String, String> that provided the field names, things would be different. but as long as you use a list with a fixed order, there is no need and point using reflection! )
Given the update, the only real answer there is: don't use 100+ fields named data1, data2, ... that is what arrays/list are for.

Spark: Mapping RDD to RDD returning nullpointer Exception

In my logic, I am attempting to map a JDBCRDD - TopologyRDD over to a JavaBean of JavaRDD.
TopologyRDD.count() returns the CORRECT number of rows, so I know the data was loaded in correctly. I also mapped TopologyRDD to a List just to confirm the data was loaded in, and it loaded in the data just fine.
Problem: When mapping TopologyRDD to MODEL_TOPOLOGYRDD, the MODEL_TOPOLOGYRDD.count() action is returning a nullpointer exception error.
Model:
public class modelTopology implements Serializable {
private String A_TYPE;
private String Z_TYPE;
private String A_CLLI;
private String Z_CLLI;
private String A_HOSTNAME;
private String Z_HOSTNAME;
private String A_LOCATION;
private String A_LOC_TYPE;
private String Z_LOCATION;
private String Z_LOC_TYPE;
private String A_SHELF;
private String A_SLOT;
private String A_CARD;
private String A_PORT;
private String A_INTERFACE;
private String A_IF_DESC;
private String Z_SHELF;
private String Z_SLOT;
private String Z_CARD;
private String Z_PORT;
private String Z_INTERFACE;
private String Z_IF_DESC;
private String A_CARD_NAME;
private String Z_CARD_NAME;
private String PHY_CIRCUIT_ID;
private String LAG_CIRCUIT_ID;
private String PHY_CIRCUIT_ALIAS;
private String A_VENDOR;
private String A_MODEL;
private String A_TECHNOLOGY;
private String Z_VENDOR;
private String Z_MODEL;
private String Z_TECHNOLOGY;
private String A_EH_ELEMENT_ID;
private String A_EH_MACHINE_ID;
private String Z_EH_ELEMENT_ID;
private String Z_EH_MACHINE_ID;
private String A_EH_SPEED;
private String Z_EH_SPEED;
private String A_EH_SPEED1;
private String Z_EH_SPEED1;
private String A_EH_EHEALTH_DOMAIN;
private String Z_EH_EHEALTH_DOMAIN;
private String A_MRTG_HOSTID;
private String A_MRTG_GRPID;
private String A_MRTG_IFID;
private String Z_MRTG_HOSTID;
private String Z_MRTG_GRPID;
private String Z_MRTG_IFID;
private String A_MGMT_IP;
private String Z_MGMT_IP;
private String A_IF_INDEX;
private String Z_IF_INDEX;
private String IS_PROD;
private String TOPOLOGY_KEY;
private String COMMIT_TS;
public void setA_TYPE(String A_TYPE) {
this.A_TYPE = A_TYPE;
}
public void setZ_TYPE(String Z_TYPE) {
this.Z_TYPE = Z_TYPE;
}
public void setA_CLLI(String A_CLLI) {
this.A_CLLI = A_CLLI;
}
public void setZ_CLLI(String Z_CLLI) {
this.Z_CLLI = Z_CLLI;
}
public void setA_HOSTNAME(String A_HOSTNAME) {
this.A_HOSTNAME = A_HOSTNAME;
}
public void setZ_HOSTNAME(String Z_HOSTNAME) {
this.Z_HOSTNAME = Z_HOSTNAME;
}
public void setA_LOCATION(String A_LOCATION) {
this.A_LOCATION = A_LOCATION;
}
public void setA_LOC_TYPE(String A_LOC_TYPE) {
this.A_LOC_TYPE = A_LOC_TYPE;
}
public void setZ_LOCATION(String Z_LOCATION) {
this.Z_LOCATION = Z_LOCATION;
}
public void setZ_LOC_TYPE(String Z_LOC_TYPE) {
this.Z_LOC_TYPE = Z_LOC_TYPE;
}
public void setA_SHELF(String A_SHELF) {
this.A_SHELF = A_SHELF;
}
public void setA_SLOT(String A_SLOT) {
this.A_SLOT = A_SLOT;
}
public void setA_CARD(String A_CARD) {
this.A_CARD = A_CARD;
}
public void setA_PORT(String A_PORT) {
this.A_PORT = A_PORT;
}
public void setA_INTERFACE(String A_INTERFACE) {
this.A_INTERFACE = A_INTERFACE;
}
public void setA_IF_DESC(String A_IF_DESC) {
this.A_IF_DESC = A_IF_DESC;
}
public void setZ_SHELF(String Z_SHELF) {
this.Z_SHELF = Z_SHELF;
}
public void setZ_SLOT(String Z_SLOT) {
this.Z_SLOT = Z_SLOT;
}
public void setZ_CARD(String Z_CARD) {
this.Z_CARD = Z_CARD;
}
public void setZ_PORT(String Z_PORT) {
this.Z_PORT = Z_PORT;
}
public void setZ_INTERFACE(String Z_INTERFACE) {
this.Z_INTERFACE = Z_INTERFACE;
}
public void setZ_IF_DESC(String Z_IF_DESC) {
this.Z_IF_DESC = Z_IF_DESC;
}
public void setA_CARD_NAME(String A_CARD_NAME) {
this.A_CARD_NAME = A_CARD_NAME;
}
public void setZ_CARD_NAME(String Z_CARD_NAME) {
this.Z_CARD_NAME = Z_CARD_NAME;
}
public void setPHY_CIRCUIT_ID(String PHY_CIRCUIT_ID) {
this.PHY_CIRCUIT_ID = PHY_CIRCUIT_ID;
}
public void setLAG_CIRCUIT_ID(String LAG_CIRCUIT_ID) {
this.LAG_CIRCUIT_ID = LAG_CIRCUIT_ID;
}
public void setPHY_CIRCUIT_ALIAS(String PHY_CIRCUIT_ALIAS) {
this.PHY_CIRCUIT_ALIAS = PHY_CIRCUIT_ALIAS;
}
public void setA_VENDOR(String A_VENDOR) {
this.A_VENDOR = A_VENDOR;
}
public void setA_MODEL(String A_MODEL) {
this.A_MODEL = A_MODEL;
}
public void setA_TECHNOLOGY(String A_TECHNOLOGY) {
this.A_TECHNOLOGY = A_TECHNOLOGY;
}
public void setZ_VENDOR(String Z_VENDOR) {
this.Z_VENDOR = Z_VENDOR;
}
public void setZ_MODEL(String Z_MODEL) {
this.Z_MODEL = Z_MODEL;
}
public void setZ_TECHNOLOGY(String Z_TECHNOLOGY) {
this.Z_TECHNOLOGY = Z_TECHNOLOGY;
}
public void setA_EH_ELEMENT_ID(String A_EH_ELEMENT_ID) {
this.A_EH_ELEMENT_ID = A_EH_ELEMENT_ID;
}
public void setA_EH_MACHINE_ID(String A_EH_MACHINE_ID) {
this.A_EH_MACHINE_ID = A_EH_MACHINE_ID;
}
public void setZ_EH_ELEMENT_ID(String Z_EH_ELEMENT_ID) {
this.Z_EH_ELEMENT_ID = Z_EH_ELEMENT_ID;
}
public void setZ_EH_MACHINE_ID(String Z_EH_MACHINE_ID) {
this.Z_EH_MACHINE_ID = Z_EH_MACHINE_ID;
}
public void setA_EH_SPEED(String A_EH_SPEED) {
this.A_EH_SPEED = A_EH_SPEED;
}
public void setZ_EH_SPEED(String Z_EH_SPEED) {
this.Z_EH_SPEED = Z_EH_SPEED;
}
public void setA_EH_SPEED1(String A_EH_SPEED1) {
this.A_EH_SPEED1 = A_EH_SPEED1;
}
public void setZ_EH_SPEED1(String Z_EH_SPEED1) {
this.Z_EH_SPEED1 = Z_EH_SPEED1;
}
public void setA_EH_EHEALTH_DOMAIN(String A_EH_EHEALTH_DOMAIN) {
this.A_EH_EHEALTH_DOMAIN = A_EH_EHEALTH_DOMAIN;
}
public void setZ_EH_EHEALTH_DOMAIN(String Z_EH_EHEALTH_DOMAIN) {
this.Z_EH_EHEALTH_DOMAIN = Z_EH_EHEALTH_DOMAIN;
}
public void setA_MRTG_HOSTID(String A_MRTG_HOSTID) {
this.A_MRTG_HOSTID = A_MRTG_HOSTID;
}
public void setA_MRTG_GRPID(String A_MRTG_GRPID) {
this.A_MRTG_GRPID = A_MRTG_GRPID;
}
public void setA_MRTG_IFID(String A_MRTG_IFID) {
this.A_MRTG_IFID = A_MRTG_IFID;
}
public void setZ_MRTG_HOSTID(String Z_MRTG_HOSTID) {
this.Z_MRTG_HOSTID = Z_MRTG_HOSTID;
}
public void setZ_MRTG_GRPID(String Z_MRTG_GRPID) {
this.Z_MRTG_GRPID = Z_MRTG_GRPID;
}
public void setZ_MRTG_IFID(String Z_MRTG_IFID) {
this.Z_MRTG_IFID = Z_MRTG_IFID;
}
public void setA_MGMT_IP(String A_MGMT_IP) {
this.A_MGMT_IP = A_MGMT_IP;
}
public void setZ_MGMT_IP(String Z_MGMT_IP) {
this.Z_MGMT_IP = Z_MGMT_IP;
}
public void setA_IF_INDEX(String A_IF_INDEX) {
this.A_IF_INDEX = A_IF_INDEX;
}
public void setZ_IF_INDEX(String Z_IF_INDEX) {
this.Z_IF_INDEX = Z_IF_INDEX;
}
public void setIS_PROD(String IS_PROD) {
this.IS_PROD = IS_PROD;
}
public void setTOPOLOGY_KEY(String TOPOLOGY_KEY) {
this.TOPOLOGY_KEY = TOPOLOGY_KEY;
}
public void setCOMMIT_TS(String COMMIT_TS) {
this.COMMIT_TS = COMMIT_TS;
}
public String getA_TYPE() {
return A_TYPE;
}
public String getZ_TYPE() {
return Z_TYPE;
}
public String getA_CLLI() {
return A_CLLI;
}
public String getZ_CLLI() {
return Z_CLLI;
}
public String getA_HOSTNAME() {
return A_HOSTNAME;
}
public String getZ_HOSTNAME() {
return Z_HOSTNAME;
}
public String getA_LOCATION() {
return A_LOCATION;
}
public String getA_LOC_TYPE() {
return A_LOC_TYPE;
}
public String getZ_LOCATION() {
return Z_LOCATION;
}
public String getZ_LOC_TYPE() {
return Z_LOC_TYPE;
}
public String getA_SHELF() {
return A_SHELF;
}
public String getA_SLOT() {
return A_SLOT;
}
public String getA_CARD() {
return A_CARD;
}
public String getA_PORT() {
return A_PORT;
}
public String getA_INTERFACE() {
return A_INTERFACE;
}
public String getA_IF_DESC() {
return A_IF_DESC;
}
public String getZ_SHELF() {
return Z_SHELF;
}
public String getZ_SLOT() {
return Z_SLOT;
}
public String getZ_CARD() {
return Z_CARD;
}
public String getZ_PORT() {
return Z_PORT;
}
public String getZ_INTERFACE() {
return Z_INTERFACE;
}
public String getZ_IF_DESC() {
return Z_IF_DESC;
}
public String getA_CARD_NAME() {
return A_CARD_NAME;
}
public String getZ_CARD_NAME() {
return Z_CARD_NAME;
}
public String getPHY_CIRCUIT_ID() {
return PHY_CIRCUIT_ID;
}
public String getLAG_CIRCUIT_ID() {
return LAG_CIRCUIT_ID;
}
public String getPHY_CIRCUIT_ALIAS() {
return PHY_CIRCUIT_ALIAS;
}
public String getA_VENDOR() {
return A_VENDOR;
}
public String getA_MODEL() {
return A_MODEL;
}
public String getA_TECHNOLOGY() {
return A_TECHNOLOGY;
}
public String getZ_VENDOR() {
return Z_VENDOR;
}
public String getZ_MODEL() {
return Z_MODEL;
}
public String getZ_TECHNOLOGY() {
return Z_TECHNOLOGY;
}
public String getA_EH_ELEMENT_ID() {
return A_EH_ELEMENT_ID;
}
public String getA_EH_MACHINE_ID() {
return A_EH_MACHINE_ID;
}
public String getZ_EH_ELEMENT_ID() {
return Z_EH_ELEMENT_ID;
}
public String getZ_EH_MACHINE_ID() {
return Z_EH_MACHINE_ID;
}
public String getA_EH_SPEED() {
return A_EH_SPEED;
}
public String getZ_EH_SPEED() {
return Z_EH_SPEED;
}
public String getA_EH_SPEED1() {
return A_EH_SPEED1;
}
public String getZ_EH_SPEED1() {
return Z_EH_SPEED1;
}
public String getA_EH_EHEALTH_DOMAIN() {
return A_EH_EHEALTH_DOMAIN;
}
public String getZ_EH_EHEALTH_DOMAIN() {
return Z_EH_EHEALTH_DOMAIN;
}
public String getA_MRTG_HOSTID() {
return A_MRTG_HOSTID;
}
public String getA_MRTG_GRPID() {
return A_MRTG_GRPID;
}
public String getA_MRTG_IFID() {
return A_MRTG_IFID;
}
public String getZ_MRTG_HOSTID() {
return Z_MRTG_HOSTID;
}
public String getZ_MRTG_GRPID() {
return Z_MRTG_GRPID;
}
public String getZ_MRTG_IFID() {
return Z_MRTG_IFID;
}
public String getA_MGMT_IP() {
return A_MGMT_IP;
}
public String getZ_MGMT_IP() {
return Z_MGMT_IP;
}
public String getA_IF_INDEX() {
return A_IF_INDEX;
}
public String getZ_IF_INDEX() {
return Z_IF_INDEX;
}
public String getIS_PROD() {
return IS_PROD;
}
public String getTOPOLOGY_KEY() {
return TOPOLOGY_KEY;
}
public String getCOMMIT_TS() {
return COMMIT_TS;
}
}
Code:
//Push into JDBC RDD Object
JdbcRDD<Object[]> TopologyJDBCRDD = new JdbcRDD(sc.sc(),oraclecon,"SELECT * FROM NPIDWUAT.FIOS_TOPOLOGY_STG WHERE ? = ?",1,1,1, new MapResult(),ClassManifestFactory$.MODULE$.fromClass(Object[].class));
//Convert to JavaRDD
JavaRDD<Object[]> TopologyRDD = JavaRDD.fromRDD(TopologyJDBCRDD, ClassManifestFactory$.MODULE$.fromClass(Object[].class));
System.out.println("Number of Records: " + TopologyRDD.count());
JavaRDD<modelTopology> MODEL_TOPOLOGYRDD = TopologyRDD.map(
new Function<Object[], modelTopology>() {
#Override
public modelTopology call(final Object[] line) throws Exception {
Object[] line2 = line;
for(int i=0;i<line2.length;i++){
if(line2[i].toString() == null){
line2[i] = "";
}
else{
line2[i] = line2[i].toString();
}
}
modelTopology toporow = new modelTopology();
toporow.setA_TYPE(line2[0].toString());
toporow.setZ_TYPE(line2[1].toString());
toporow.setA_CLLI(line2[2].toString());
toporow.setZ_CLLI(line2[3].toString());
toporow.setA_HOSTNAME(line2[4].toString());
toporow.setZ_HOSTNAME(line2[5].toString());
toporow.setA_LOCATION(line2[6].toString());
toporow.setA_LOC_TYPE(line2[7].toString());
toporow.setZ_LOCATION(line2[8].toString());
toporow.setZ_LOC_TYPE(line2[9].toString());
toporow.setA_SHELF(line2[10].toString());
toporow.setA_SLOT(line2[11].toString());
toporow.setA_CARD(line2[12].toString());
toporow.setA_PORT(line2[13].toString());
toporow.setA_INTERFACE(line2[14].toString());
toporow.setA_IF_DESC(line2[15].toString());
toporow.setZ_SHELF(line2[16].toString());
toporow.setZ_SLOT(line2[17].toString());
toporow.setZ_CARD(line2[18].toString());
toporow.setZ_PORT(line2[19].toString());
toporow.setZ_INTERFACE(line2[20].toString());
toporow.setZ_IF_DESC(line2[21].toString());
toporow.setA_CARD_NAME(line2[22].toString());
toporow.setZ_CARD_NAME(line2[23].toString());
toporow.setPHY_CIRCUIT_ID(line2[24].toString());
toporow.setLAG_CIRCUIT_ID(line2[25].toString());
toporow.setPHY_CIRCUIT_ALIAS(line2[26].toString());
toporow.setA_VENDOR(line2[27].toString());
toporow.setA_MODEL(line2[28].toString());
toporow.setA_TECHNOLOGY(line2[29].toString());
toporow.setZ_VENDOR(line2[30].toString());
toporow.setZ_MODEL(line2[31].toString());
toporow.setZ_TECHNOLOGY(line2[32].toString());
toporow.setA_EH_ELEMENT_ID(line2[33].toString());
toporow.setA_EH_MACHINE_ID(line2[34].toString());
toporow.setZ_EH_ELEMENT_ID(line2[35].toString());
toporow.setZ_EH_MACHINE_ID(line2[36].toString());
toporow.setA_EH_SPEED(line2[37].toString());
toporow.setZ_EH_SPEED(line2[38].toString());
toporow.setA_EH_SPEED1(line2[39].toString());
toporow.setZ_EH_SPEED1(line2[40].toString());
toporow.setA_EH_EHEALTH_DOMAIN(line2[41].toString());
toporow.setZ_EH_EHEALTH_DOMAIN(line2[42].toString());
toporow.setA_MRTG_HOSTID(line2[43].toString());
toporow.setA_MRTG_GRPID(line2[44].toString());
toporow.setA_MRTG_IFID(line2[45].toString());
toporow.setZ_MRTG_HOSTID(line2[46].toString());
toporow.setZ_MRTG_GRPID(line2[47].toString());
toporow.setZ_MRTG_IFID(line2[48].toString());
toporow.setA_MGMT_IP(line2[49].toString());
toporow.setZ_MGMT_IP(line2[50].toString());
toporow.setA_IF_INDEX(line2[51].toString());
toporow.setZ_IF_INDEX(line2[52].toString());
toporow.setIS_PROD(line2[53].toString());
toporow.setTOPOLOGY_KEY(line2[54].toString());
toporow.setCOMMIT_TS(line2[55].toString());
return toporow;
}
});
System.out.println("MODEL_TOPOLOGYRDD COUNT: " + MODEL_TOPOLOGYRDD.count());
Stacktrace:
Application Failed...org.apache.spark.SparkException: Job aborted due to stage failure: Task 0 in stage 1.0 failed 1 times, most recent failure: Lost task 0.0 in stage 1.0 (TID 1, localhost): java.lang.NullPointerException
at com.verizon.npi.MainApp$1.call(MainApp.java:103)
at com.verizon.npi.MainApp$1.call(MainApp.java:96)
at org.apache.spark.api.java.JavaPairRDD$$anonfun$toScalaFunction$1.apply(JavaPairRDD.scala:999)
at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
at org.apache.spark.storage.MemoryStore.unrollSafely(MemoryStore.scala:249)
at org.apache.spark.CacheManager.putInBlockManager(CacheManager.scala:163)
at org.apache.spark.CacheManager.getOrCompute(CacheManager.scala:70)
at org.apache.spark.rdd.RDD.iterator(RDD.scala:243)
at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:61)
at org.apache.spark.scheduler.Task.run(Task.scala:56)
at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:200)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
The only problem I can see with this code is if any line2[i] are null.
And if(line2[i].toString() == null) won't work because toString() never returns null for the Object class.
I see that you want any null values to become empty strings, so try this as your for-loop instead
for(int i = 0; i < line2.length; i++){
line2[i] = (line2[i] == null) ? "" : String.valueOf(line2[i]);
}
Note the use of String.valueOf, which altogether avoids the NullPointerException when trying to get the String value of objects.

How to pass array of string in insert query in ibatis?

How to pass array of string in insert query statement in ibatis. On passing string array as parameter it is giving me this exception of ibatis -
Can't infer the SQL type to use for an instance of [Ljava.lang.String;. Use setObject() with an explicit Types value to specify the type to use.
How to solve this error ?
My method is -
public void insertCampaignData(String campaignData, ObjectMapper jsonObjMapper) {
Campaign campaign = null;
SqlSession session = null;
IfrmCreateCampaign createCampaign = null;
try {
campaign = jsonObjMapper.readValue(campaignData,Campaign.class);
session = DBConnectionFactory.getNewSession();
createCampaign = session.getMapper(IfrmCreateCampaign.class);
createCampaign.insertCampaignData(campaign);
} catch (Exception e) {
e.printStackTrace();
} finally {
session.close();
}
}
My entity class is -
import java.io.File;
import java.util.Date;
public class Campaign {
private long campaignId;
private String campaignName;
private long keywordId;
private String brandName;
private String clientName;
private String mobileNum;
private Date startTime;
private Date endTime;
private double campaignBudget;
private double allocatedFund;
private double campaignRate;
private boolean basicTgt;
private boolean customTgt;
private boolean advTgt;
private boolean chechme;
private boolean couponSend;
private String couponFrom;
private String couponTo;
private String couponFilePath;
private File[] couponFile;
private String[] couponFileFileName;
private String[] couponFileContent;
private String callbackUrl;
private String status;
private int campaignTypeId;
private long roAmount;
// edit
private int roType;
public int getRoType() {
return roType;
}
public void setRoType(int roType) {
this.roType = roType;
}
// edit
private String strStartTime;
private String strEndTime;
private String keyword;
private String keywordNum;
private int goal;
private double spentAmount;
private int goalAchievePercent;
private int dial;
private int uniqueDial;
private long userId;
private double campaignTotalAmount;
private double operatorShare;
private long responseCount;
private String strRoPdfFileName;
private File[] roPdf;
private String[] roPdfFileName;
private String[] roPdfContent;
public long getCampaignId() {
return campaignId;
}
public void setCampaignId(long campaignId) {
this.campaignId = campaignId;
}
public String getCampaignName() {
return campaignName;
}
public void setCampaignName(String campaignName) {
this.campaignName = campaignName;
}
public long getKeywordId() {
return keywordId;
}
public void setKeywordId(long keywordId) {
this.keywordId = keywordId;
}
public String getKeywordNum() {
return keywordNum;
}
public void setKeywordNum(String keywordNum) {
this.keywordNum = keywordNum;
}
public String getBrandName() {
return brandName;
}
public void setBrandName(String brandName) {
this.brandName = brandName;
}
public String getClientName() {
return clientName;
}
public void setClientName(String clientName) {
this.clientName = clientName;
}
public String getMobileNum() {
return mobileNum;
}
public void setMobileNum(String mobileNum) {
this.mobileNum = mobileNum;
}
public Date getStartTime() {
return startTime;
}
public void setStartTime(Date startTime) {
this.startTime = startTime;
}
public Date getEndTime() {
return endTime;
}
public void setEndTime(Date endTime) {
this.endTime = endTime;
}
public double getCampaignBudget() {
return campaignBudget;
}
public void setCampaignBudget(double campaignBudget) {
this.campaignBudget = campaignBudget;
}
public double getAllocatedFund() {
return allocatedFund;
}
public void setAllocatedFund(double allocatedFund) {
this.allocatedFund = allocatedFund;
}
public double getCampaignRate() {
return campaignRate;
}
public void setCampaignRate(double campaignRate) {
this.campaignRate = campaignRate;
}
public boolean isBasicTgt() {
return basicTgt;
}
public void setBasicTgt(boolean basicTgt) {
this.basicTgt = basicTgt;
}
public boolean isCustomTgt() {
return customTgt;
}
public void setCustomTgt(boolean customTgt) {
this.customTgt = customTgt;
}
public boolean isAdvTgt() {
return advTgt;
}
public void setAdvTgt(boolean advTgt) {
this.advTgt = advTgt;
}
public boolean isChechme() {
return chechme;
}
public void setChechme(boolean chechme) {
this.chechme = chechme;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getStrStartTime() {
return strStartTime;
}
public void setStrStartTime(String strStartTime) {
this.strStartTime = strStartTime;
}
public String getStrEndTime() {
return strEndTime;
}
public void setStrEndTime(String strEndTime) {
this.strEndTime = strEndTime;
}
public String getKeyword() {
return keyword;
}
public void setKeyword(String keyword) {
this.keyword = keyword;
}
public int getGoal() {
return goal;
}
public void setGoal(int goal) {
this.goal = goal;
}
public double getSpentAmount() {
return spentAmount;
}
public void setSpentAmount(double spentAmount) {
this.spentAmount = spentAmount;
}
public int getGoalAchievePercent() {
return goalAchievePercent;
}
public void setGoalAchievePercent(int goalAchievePercent) {
this.goalAchievePercent = goalAchievePercent;
}
public int getDial() {
return dial;
}
public void setDial(int dial) {
this.dial = dial;
}
public int getUniqueDial() {
return uniqueDial;
}
public void setUniqueDial(int uniqueDial) {
this.uniqueDial = uniqueDial;
}
public long getUserId() {
return userId;
}
public void setUserId(long userId) {
this.userId = userId;
}
public boolean isCouponSend() {
return couponSend;
}
public void setCouponSend(boolean couponSend) {
this.couponSend = couponSend;
}
public String getCouponFrom() {
return couponFrom;
}
public void setCouponFrom(String couponFrom) {
this.couponFrom = couponFrom;
}
public String getCouponTo() {
return couponTo;
}
public void setCouponTo(String couponTo) {
this.couponTo = couponTo;
}
public String getCouponFilePath() {
return couponFilePath;
}
public void setCouponFilePath(String couponFilePath) {
this.couponFilePath = couponFilePath;
}
public File[] getCouponFile() {
return couponFile;
}
public void setCouponFile(File[] couponFile) {
this.couponFile = couponFile;
}
public String[] getCouponFileFileName() {
return couponFileFileName;
}
public void setCouponFileFileName(String[] couponFileFileName) {
this.couponFileFileName = couponFileFileName;
}
public String[] getCouponFileContent() {
return couponFileContent;
}
public void setCouponFileContent(String[] couponFileContent) {
this.couponFileContent = couponFileContent;
}
public String getCallbackUrl() {
return callbackUrl;
}
public void setCallbackUrl(String callbackUrl) {
this.callbackUrl = callbackUrl;
}
public int getCampaignTypeId() {
return campaignTypeId;
}
public void setCampaignTypeId(int campaignTypeId) {
this.campaignTypeId = campaignTypeId;
}
public long getRoAmount() {
return roAmount;
}
public void setRoAmount(long roAmount) {
this.roAmount = roAmount;
}
public double getOperatorShare() {
return operatorShare;
}
public void setOperatorShare(double operatorShare) {
this.operatorShare = operatorShare;
}
public long getResponseCount() {
return responseCount;
}
public void setResponseCount(long responseCount) {
this.responseCount = responseCount;
}
public double getCampaignTotalAmount() {
return campaignTotalAmount;
}
public void setCampaignTotalAmount(double campaignTotalAmount) {
this.campaignTotalAmount = campaignTotalAmount;
}
public String getStrRoPdfFileName() {
return strRoPdfFileName;
}
public void setStrRoPdfFileName(String strRoPdfFileName) {
this.strRoPdfFileName = strRoPdfFileName;
}
public File[] getRoPdf() {
return roPdf;
}
public void setRoPdf(File[] roPdf) {
this.roPdf = roPdf;
}
public String[] getRoPdfFileName() {
return roPdfFileName;
}
public void setRoPdfFileName(String[] roPdfFileName) {
this.roPdfFileName = roPdfFileName;
}
public String[] getRoPdfContent() {
return roPdfContent;
}
public void setRoPdfContent(String[] roPdfContent) {
this.roPdfContent = roPdfContent;
}
}
My xml mapping file is -
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mogae.starStarWebServices.db.dao.IfrmCreateCampaign">
<insert id="insertCampaignData" statementType="PREPARED" >
insert into campaign(campaign_id,campaign_name,keyword_id,brand_name,client_name,mobile_num,start_time,end_time,campaign_type_id,ro_amount,ro_type,ro_pdf_file_name,campaign_budget,allocated_fund,campaign_rate,is_basic_tgt,is_custom_tgt,is_adv_tgt,is_checkme,is_coupon_send,coupon_from,coupon_to,coupon_file,callback_url,status) values (#{campaignId},#{campaignName},#{keywordId},#{brandName},#{clientName},#{mobileNum},#{startTime},#{endTime},#{campaignTypeId},#{roAmount},#{roType},
#{strRoPdfFileName},#{campaignBudget},#{allocatedFund},#{campaignRate},#{basicTgt},#{customTgt},#{advTgt},#{chechme},#{couponSend},#{couponFrom},#{couponTo},#{couponFileFileName},#{callbackUrl},#{status});
</insert>
<insert id="insertKeywordData" statementType="PREPARED" >
insert into keywords(keyword_id,keyword,keyword_num,booked_by,purchased_on,expires_on,status) values (#{keywordId},#{keyword},#{keywordNum},#{bookedBy},#{purchasedOn},#{expiresOn},#{status})
</insert>
</mapper>

constructor in class cannot applied to given types

I have problem with this constructor TblPemohon in class entity.TblPemohon cannot applied to given types.
I'm using Netbeans 7.0.1
The code for entity.TblProblem:
public class TblPemohon {
private String KtpPemohon;
private String NamaDepanPemohon;
private String NamaBelakangPemohon;
private String TempatLahirPemohon;
private String TanggalLahirPemohon;
private String JenisKelamin;
private String AgamaPemohon;
private String StatusPerkawinan;
private String PekerjaanPemohon;
private String NamaJalanPemohon;
private String NoAlamatPemohon;
private String RtPemohon;
private String RwPemohon;
private String KelurahanPemohon;
private String KecamatanPemohon;
private String KabupatenPemohon;
private String ProvinsiPemohon;
private String KodePosPemohon;
private String TelpPemohon;
private String KewarganegaraanPemohon;
private String errorCode;
public TblPemohon() {
}
public String getKtpPemohon() {
return KtpPemohon;
}
public void setKtpPemohon(String KtpPemohon) {
this.KtpPemohon = KtpPemohon;
}
public String getNamaDepanPemohon() {
return NamaDepanPemohon;
}
public void setNamaDepanPemohon(String NamaDepanPemohon) {
this.NamaDepanPemohon = NamaDepanPemohon;
}
public String getNamaBelakangPemohon() {
return NamaBelakangPemohon;
}
public void setNamaBelakangPemohon(String NamaBelakangPemohon) {
this.NamaBelakangPemohon = NamaBelakangPemohon;
}
public String getTempatLahirPemohon() {
return TempatLahirPemohon;
}
public void setTempatLahirPemohon(String TempatLahirPemohon) {
this.TempatLahirPemohon = TempatLahirPemohon;
}
public String getTanggalLahirPemohon() {
return TanggalLahirPemohon;
}
public void setTanggalLahirPemohon(String TanggalLahirPemohon) {
this.TanggalLahirPemohon = TanggalLahirPemohon;
}
public String getJenisKelamin() {
return JenisKelamin;
}
public void setJenisKelamin(String JenisKelamin) {
this.JenisKelamin = JenisKelamin;
}
public String getAgamaPemohon() {
return AgamaPemohon;
}
public void setAgamaPemohon(String AgamaPemohon) {
this.AgamaPemohon = AgamaPemohon;
}
public String getStatusPerkawinan() {
return StatusPerkawinan;
}
public void setStatusPerkawinan(String StatusPerkawinan) {
this.StatusPerkawinan = StatusPerkawinan;
}
public String getPekerjaanPemohon() {
return PekerjaanPemohon;
}
public void setPekerjaanPemohon(String PekerjaanPemohon) {
this.PekerjaanPemohon = PekerjaanPemohon;
}
public String getNamaJalanPemohon() {
return NamaJalanPemohon;
}
public void setNamaJalanPemohon(String NamaJalanPemohon) {
this.NamaJalanPemohon = NamaJalanPemohon;
}
public String getNoAlamatPemohon() {
return NoAlamatPemohon;
}
public void setNoAlamatPemohon(String NoAlamatPemohon) {
this.NoAlamatPemohon = NoAlamatPemohon;
}
public String getRtPemohon() {
return RtPemohon;
}
public void setRtPemohon(String RtPemohon) {
this.RtPemohon = RtPemohon;
}
public String getRwPemohon() {
return RwPemohon;
}
public void setRwPemohon(String RwPemohon) {
this.RwPemohon = RwPemohon;
}
public String getKelurahanPemohon() {
return KelurahanPemohon;
}
public void setKelurahanPemohon(String KelurahanPemohon) {
this.KelurahanPemohon = KelurahanPemohon;
}
public String getKecamatanPemohon() {
return KecamatanPemohon;
}
public void setKecamatanPemohon(String KecamatanPemohon) {
this.KecamatanPemohon = KecamatanPemohon;
}
public String getKabupatenPemohon() {
return KabupatenPemohon;
}
public void setKabupatenPemohon(String KabupatenPemohon) {
this.KabupatenPemohon = KabupatenPemohon;
}
public String getProvinsiPemohon() {
return ProvinsiPemohon;
}
public void setProvinsiPemohon(String ProvinsiPemohon) {
this.ProvinsiPemohon = ProvinsiPemohon;
}
public String getKodePosPemohon() {
return KodePosPemohon;
}
public void setKodePosPemohon(String KodePosPemohon) {
this.KodePosPemohon = KodePosPemohon;
}
public String getTelpPemohon() {
return TelpPemohon;
}
public void setTelpPemohon(String TelpPemohon) {
this.TelpPemohon = TelpPemohon;
}
public String getKewarganegaraanPemohon() {
return KewarganegaraanPemohon;
}
public void setKewarganegaraanPemohon(String KewarganegaraanPemohon) {
this.KewarganegaraanPemohon = KewarganegaraanPemohon;
}
public String getErrorCode() {
return errorCode;
}
public void setErrorCode(String errorCode) {
this.errorCode = errorCode;
}
}
and the code for another class which call it
public List<TblPemohon> getTblPemohons() {
DataBase db = new DataBase();
try {
Pemohon p = new Pemohon(db.getConnection());
return p.getTblPemohons();
} catch (Exception e) {
List<TblPemohon> ltp = new ArrayList<TblPemohon>();
ltp.add(new TblPemohon(e.getMessage()));
return ltp;
} finally {
db.close();
}
}
Your TblPemohon class only have non-argument constructor, but you tried to create it with a constructor that takes one string here:
ltp.add(new TblPemohon(e.getMessage()));
You need to either add a constructor that take one string, or use the non-argument constructor

Categories

Resources