instead of defining a rule in the fire-base database, the easiest way to prevent duplicate entries is, first of all, to get all the data from the fire-base database and compare it with the data (new data) that you want to keep if it is matched with the previous ones data, then discards the save in the database, otherwise stored in database.check below for clarity.
public class MainActivity extends AppCompatActivity { private static final String TAG = MainActivity.class.getSimpleName(); private BroadcastReceiver mRegistrationBroadcastReceiver; private TextView txtRegId, txtMessage; DatabaseReference databaseArtists; ListView listViewArtists; public static String regId; List<Artist> artistList; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); txtRegId = (TextView) findViewById(R.id.regid); txtRegId.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { displayFirebaseRegId(); boolean flag=false; String tokenId=regId; for(Artist a:artistList) {Log.d("RAaz",a.getTokenId()+" "+tokenId); if(a.getTokenId().equalsIgnoreCase(tokenId)) { flag=true; Toast.makeText(MainActivity.this, "True", Toast.LENGTH_SHORT).show(); } } if(flag) { Toast.makeText(MainActivity.this, "User Already Exists", Toast.LENGTH_SHORT).show(); } else { addArtist(); } } }); mRegistrationBroadcastReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) {
Below is the code to add data to firebase
private void addArtist() { String name = "User"; String genre = regId; if (!TextUtils.isEmpty(name)) { String id = databaseArtists.push().getKey(); Artist artist = new Artist(id,genre,name); databaseArtists.child(id).setValue(artist); Toast.makeText(this, "Artist Added", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(this, "Please enter name", Toast.LENGTH_SHORT).show(); } }
use onStart to get information from firebase database
protected void onStart() { super.onStart(); Toast.makeText(this, "On Start", Toast.LENGTH_SHORT).show(); databaseArtists.addValueEventListener(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { artistList.clear(); for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()) { Artist artist = dataSnapshot1.getValue(Artist.class); artistList.add(artist); } } @Override public void onCancelled(DatabaseError databaseError) { } }); }
finally add the pojo class
public class Artist { private String artistId; private String tokenId; private String roleName; public Artist() { } public Artist(String artistId, String tokenId, String roleName) { this.artistId = artistId; this.tokenId = tokenId; this.roleName = roleName; } public String getArtistId() { return artistId; } public void setArtistId(String artistId) { this.artistId = artistId; } public String getTokenId() { return tokenId; } public void setTokenId(String tokenId) { this.tokenId = tokenId; } public String getRoleName() { return roleName; } public void setRoleName(String roleName) { this.roleName = roleName; }
}