Skip to content

Commit

Permalink
... (Not working)
Browse files Browse the repository at this point in the history
  • Loading branch information
tdoiron0 committed Apr 4, 2024
1 parent e4b2464 commit 495bd32
Show file tree
Hide file tree
Showing 6 changed files with 138 additions and 17 deletions.
34 changes: 26 additions & 8 deletions app/src/main/java/com/group3/spotifywrapped/LoginActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,7 @@
import android.widget.EditText;

import java.util.List;
import java.util.Random;
import java.util.concurrent.atomic.AtomicLong;
import java.util.concurrent.atomic.AtomicBoolean;

import com.group3.spotifywrapped.summary.SummaryActivity;
import com.group3.spotifywrapped.database.MyDatabase;
Expand All @@ -38,8 +37,8 @@ public class LoginActivity extends AppCompatActivity {

public static User activeUser;

private MyDatabaseDao userDao;
private boolean tokenRecieved = false;
private MyDatabaseDao myDatabaseDao;
private AtomicBoolean tokenRecieved = new AtomicBoolean(false);

@Override
protected void onCreate(Bundle savedInstanceState) {
Expand All @@ -53,19 +52,21 @@ protected void onCreate(Bundle savedInstanceState) {
Button loginButton = findViewById(R.id.loginButton);

MyDatabase db = MyDatabase.getInstance(this);
userDao = db.myDatabaseDao();
myDatabaseDao = db.myDatabaseDao();

//addTestUser();

loginButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Thread loginThread = new Thread(new Runnable() {
@Override
public void run() {
List<User> usersFound = userDao.findByLoginInfo(username.getText().toString(), password.getText().toString());
List<User> usersFound = myDatabaseDao.findByLoginInfo(username.getText().toString(), password.getText().toString());
if (!usersFound.isEmpty()) {
activeUser = usersFound.get(0);
getToken();
while (!tokenRecieved);
while (!tokenRecieved.get());
Log.d("LoginActivity", "Token recieved: " + activeUser.sToken);
Intent i = new Intent(LoginActivity.this, SummaryActivity.class);
startActivity(i);
Expand Down Expand Up @@ -104,7 +105,24 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (AUTH_TOKEN_REQUEST_CODE == requestCode) {
//Log.d("LoginActivity", "Response: " + response.getAccessToken());
activeUser.sToken = response.getAccessToken();
tokenRecieved = true;
tokenRecieved.set(true);
}
}

private void addTestUser() {
User trentUser = new User(
0,
"tdoiron0",
"1234",
"[email protected]",
"Trent Doiron"
);
Thread insertUserThread = new Thread(new Runnable() {
@Override
public void run() {
myDatabaseDao.insertUser(trentUser);
}
});
insertUserThread.start();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,39 @@
import android.content.Context;
import android.util.Log;

import com.group3.spotifywrapped.LoginActivity;
import com.group3.spotifywrapped.R;

import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.Set;
import java.util.concurrent.atomic.AtomicLong;
import java.util.concurrent.atomic.AtomicReference;

public class DatabaseHelper {
private enum GenUniqueIdMode{
USER,
SUMMARY_ENTRY,
ARTIST,
TRACK
}

private static MyDatabase db = null;

public static void init(Context context) {
db = MyDatabase.getInstance(context);
}

public static void addSummaryEntry(List<String> trackNames, List<String> artistNames, List<String> albumURLs, List<String> artistProfilePictureURLs) {

long newEntryId = genUniqueId(GenUniqueIdMode.SUMMARY_ENTRY);
SummaryEntry newEntry = new SummaryEntry(
newEntryId,
LoginActivity.activeUser.id,
LocalDateTime.now().toString()
);
asyncInsertSummaryEntry(newEntry);
}
public static List<Track> getTracks(long summaryEntryId) {
AtomicReference<List<Track>> result = new AtomicReference<>();
Expand Down Expand Up @@ -52,12 +70,88 @@ public void run() {
return result.get();
}

private long genUniqueId(Set<Long> existingId) {
private static long genUniqueId(GenUniqueIdMode mode) {
AtomicReference<List<Long>> existingIdList = new AtomicReference<>();
Runnable runnable;
switch(mode) {
case USER:
runnable = new Runnable() {
@Override
public void run() {
existingIdList.set(db.myDatabaseDao().getUserIdList());
}
};
break;
case SUMMARY_ENTRY:
runnable = new Runnable() {
@Override
public void run() {
existingIdList.set(db.myDatabaseDao().getSummaryEntryIdList());
}
};
break;
case ARTIST:
runnable = new Runnable() {
@Override
public void run() {
existingIdList.set(db.myDatabaseDao().getArtistIdList());
}
};
break;
case TRACK:
runnable = new Runnable() {
@Override
public void run() {
existingIdList.set(db.myDatabaseDao().getTrackIdSet());
}
};
break;
default:
runnable = new Runnable() {
@Override
public void run() {
existingIdList.set(new ArrayList<Long>());
}
};
}

Thread getIdListThread = new Thread(runnable);
getIdListThread.start();
try {
getIdListThread.join();
} catch(Exception e) {
Log.e("DatabaseHelper", e.toString());
}

Random rand = new Random();
long result = rand.nextLong();
while (existingId.contains(result)) {
while (existingIdList.get().contains(result)) {
result = rand.nextLong();
}
return result;
}
private static void asyncInsertSummaryEntry(SummaryEntry newEntry) {
new Thread(new Runnable() {
@Override
public void run() {
db.myDatabaseDao().insertSummaryEntry(newEntry);
}
}).start();
}
private static void asyncInsertArtist(Artist newArtist) {
new Thread(new Runnable() {
@Override
public void run() {
db.myDatabaseDao().insertArtist(newArtist);
}
}).start();
}
private static void asyncInsertTrack(Track track) {
new Thread(new Runnable() {
@Override
public void run() {
db.myDatabaseDao().insertTrack(track);
}
}).start();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import androidx.room.Room;
import androidx.room.RoomDatabase;

@Database(entities = {User.class, SummaryEntry.class, Artist.class, Track.class}, version = 4)
@Database(entities = {User.class, SummaryEntry.class, Artist.class, Track.class}, version = 5)
public abstract class MyDatabase extends RoomDatabase {
private static MyDatabase INSTANCE;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
import androidx.room.Update;

import java.util.List;
import java.util.Set;

@Dao
public interface MyDatabaseDao {
Expand All @@ -22,7 +21,7 @@ public interface MyDatabaseDao {
@Query("SELECT * FROM user WHERE id LIKE :id")
List<User> findUsersById(long id);
@Query("SELECT id FROM user")
List<Long> getUserIdSet();
List<Long> getUserIdList();
@Query("SELECT * FROM user WHERE username LIKE :username AND password LIKE :password LIMIT 1")
List<User> findByLoginInfo(String username, String password);

Expand All @@ -35,7 +34,7 @@ public interface MyDatabaseDao {
void updateSummaryEntry(SummaryEntry summaryEntry);

@Query("SELECT id FROM summaryentry")
List<Long> getSummaryEntryIdSet();
List<Long> getSummaryEntryIdList();
@Query("SELECT * FROM summaryentry WHERE id LIKE :id")
List<SummaryEntry> findSummaryEntriesById(long id);

Expand All @@ -48,7 +47,7 @@ public interface MyDatabaseDao {
void updateArtist(Artist artist);

@Query("SELECT id FROM artist")
List<Long> getArtistIdSet();
List<Long> getArtistIdList();
@Query("SELECT * FROM artist WHERE id LIKE :id")
List<Artist> findArtistsById(long id);
@Query("SELECT * FROM artist WHERE summary_entry_id = :id")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,8 @@ public class User {

public User(){}

public User(@NonNull String username, String password, String email, String name) {
public User(@NonNull long id, String username, String password, String email, String name) {
this.id = id;
this.username = username;
this.password = password;
this.email = email;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,16 @@
package com.group3.spotifywrapped.summary;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;

import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;

import com.group3.spotifywrapped.LoginActivity;
import com.group3.spotifywrapped.R;
import com.group3.spotifywrapped.database.SummaryEntry;

Expand All @@ -18,7 +21,13 @@ protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_summary_selector);

Button genSummaryButton = findViewById(R.id.generateNewWrappedButton);
genSummaryButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

}
});
}

public static SummaryEntry getSelectedEntry() {
Expand Down

0 comments on commit 495bd32

Please sign in to comment.