@@ -2,7 +2,7 @@

import sample.models.DbConnectionManager;
import sample.models.notecardModels.noteCards.NoteCard;
import sample.models.notecardModels.noteCards.Stack;
import sample.models.notecardModels.noteCards.StackModel;

import java.sql.Connection;
import java.sql.PreparedStatement;
@@ -16,7 +16,7 @@
import java.util.stream.Collectors;

/**
* Model for the NoteCards and NoteCard Stacks
* Model for the NoteCards and NoteCard StackModel
* @author rn046359
*/
public class NoteCardModel {
@@ -37,29 +37,29 @@ public NoteCardModel() {
*
* @return the stack
*/
public Stack getSingleStack(final String stackName, final String userId) {
final Stack stack = new Stack();
public StackModel getSingleStack(final String stackName, final String userId) {
final StackModel stackModel = new StackModel();
try {
final String query = "SELECT id, name, course, subject, date_created, date_modified " +
"FROM stacks WHERE name = '"+ stackName +
"' AND user_id = '" + userId +
final String query = "SELECT stack_id, name, course, subject, date_created, date_modified " +
"FROM stacks WHERE name = '"+stackName+
// "' AND user_id = "+ userId +
"' ORDER BY date_created DESC";

final Statement stmt = connection.createStatement();
final ResultSet resultSet = stmt.executeQuery(query);

if(resultSet.next()) {
stack.setName(resultSet.getString("name"));
stack.setCourse(resultSet.getString("course"));
stack.setSubject(resultSet.getString("subject"));
stack.setDateCreated(resultSet.getString("date_created"));
stack.setDateModified(resultSet.getString("date_modified"));
stack.setNoteCards(getNoteCardsForStack(resultSet.getString("id"), userId));
stackModel.setName(resultSet.getString("name"));
stackModel.setCourse(resultSet.getString("course"));
stackModel.setSubject(resultSet.getString("subject"));
stackModel.setDateCreated(resultSet.getString("date_created"));
stackModel.setDateModified(resultSet.getString("date_modified"));
stackModel.setNoteCards(getNoteCardsForStack(resultSet.getString("stack_id"), userId));
}
} catch (SQLException e) {
e.printStackTrace();
}
return stack;
return stackModel;
}

/**
@@ -73,32 +73,32 @@ public Stack getSingleStack(final String stackName, final String userId) {
*
* @return A Map of stacks mapped by stack name
*/
public Map<String, Stack> getStacksByCourse(final String course, final String userId) {
public Map<String, StackModel> getStacksByCourse(final String course, final String userId) {
final Statement stmt;
final ResultSet result;
final List<Stack> stacks;
final List<StackModel> stackses;
try {
final String query = "SELECT id, name, course, subject, date_created, date_modified " +
"FROM stacks WHERE course = '"+ course +
"FROM stackses WHERE course = '"+ course +
"' AND user_id = '" + userId +
"' ORDER BY date_created DESC";

stmt = connection.createStatement();
result = stmt.executeQuery(query);
stacks = new ArrayList<>();
stackses = new ArrayList<>();

while(result.next()) {
final Stack stack = new Stack();
final StackModel stack = new StackModel();
stack.setName(result.getString("name"));
stack.setCourse(result.getString("course"));
stack.setSubject(result.getString("subject"));
stack.setDateCreated(result.getString("date_created"));
stack.setDateModified(result.getString("date_modified"));
stack.setNoteCards(getNoteCardsForStack(result.getString("id"), userId));
stacks.add(stack);
stackses.add(stack);
}

final Map<String, Stack> mapByStackName = stacks.stream().collect(Collectors.toMap(Stack::getName, Function.identity()));
final Map<String, StackModel> mapByStackName = stackses.stream().collect(Collectors.toMap(StackModel::getName, Function.identity()));
return mapByStackName;
} catch (SQLException e) {
e.printStackTrace();
@@ -120,30 +120,30 @@ public Map<String, Stack> getStacksByCourse(final String course, final String us
*
* @return a Map of stacks mapped by stack name
*/
public Map<String,Stack> getStacksBySubject(final String course, final String subject, final String userId) {
public Map<String,StackModel> getStacksBySubject(final String course, final String subject, final String userId) {
try {
final String query = "SELECT id, name, course, subject, date_created, date_modified " +
"FROM stacks, WHERE course = '"+ course +
"FROM stackses, WHERE course = '"+ course +
"' AND subject = '" + subject +
"' AND user_id = '" + userId +
"' ORDER BY date_created DESC";

final Statement stmt = connection.createStatement();
final ResultSet result = stmt.executeQuery(query);
final List<Stack> stacks = new ArrayList<>();
final List<StackModel> stackses = new ArrayList<>();

while(result.next()) {
final Stack stack = new Stack();
final StackModel stack = new StackModel();
stack.setName(result.getString("name"));
stack.setCourse(result.getString("course"));
stack.setSubject(result.getString("subject"));
stack.setDateCreated(result.getString("date_created"));
stack.setDateModified(result.getString("date_modified"));
stack.setNoteCards(getNoteCardsForStack(result.getString("id"), userId));
stacks.add(stack);
stackses.add(stack);
}

final Map<String, Stack> mapByStackName = stacks.stream().collect(Collectors.toMap(Stack::getName, Function.identity()));
final Map<String, StackModel> mapByStackName = stackses.stream().collect(Collectors.toMap(StackModel::getName, Function.identity()));
return mapByStackName;
} catch (SQLException e) {
e.printStackTrace();
@@ -166,9 +166,9 @@ public Map<String,Stack> getStacksBySubject(final String course, final String su
private List<NoteCard> getNoteCardsForStack(final String stackId, final String uid ) {
try {
final String query = "SELECT front, back, stack_index FROM notecard " +
"WHERE stack_id = " + stackId +
" AND user_id = " + uid +
" ORDER BY id DESC";
"WHERE stack_id = " + stackId ;
// " AND user_id = " + uid +
// " ORDER BY id DESC";

final Statement stmt = connection.createStatement();
final ResultSet results = stmt.executeQuery(query);
@@ -227,28 +227,28 @@ public boolean createNoteCard(final NoteCard noteCard, final String userId) {
}

/**
* Insert a stack into the database
* Insert a stackModel into the database
*
* @param stack
* the new stack instance
* @param stackModel
* the new stackModel instance
*
* @param userId
* the user id
*
* @return True if the insert was successful. False otherwise.
*/
public boolean createStack(final Stack stack, final String userId) {
public boolean createStack(final StackModel stackModel, final String userId) {
try {
final String query = "INSERT INTO stacks (id, name, date_modified, date_created, course, subject, user_id) " +
final String query = "INSERT INTO stackModel (id, name, date_modified, date_created, course, subject, user_id) " +
"VALUES (?, ?, ?, ?, ?, ?, ?)";
final PreparedStatement stmt = connection.prepareStatement(query);

stmt.setString(1, stack.getId());
stmt.setString(2, stack.getName());
stmt.setString(3, stack.getDateModified());
stmt.setString(4, stack.getDateCreated());
stmt.setString(5, stack.getCourse());
stmt.setString(6, stack.getSubject());
stmt.setString(1, stackModel.getId());
stmt.setString(2, stackModel.getName());
stmt.setString(3, stackModel.getDateModified());
stmt.setString(4, stackModel.getDateCreated());
stmt.setString(5, stackModel.getCourse());
stmt.setString(6, stackModel.getSubject());
stmt.setString(7, userId);

final int rowsInserted = stmt.executeUpdate();
@@ -304,32 +304,32 @@ public boolean updateNoteCard(NoteCard updatedNoteCard, String userId) {
/**
* Update a specific stack
*
* @param updatedStack
* @param updatedStackModel
* the updated stack instance
*
* @param userId
* the user id
*
* @return True if the insert was successful. False otherwise.
*/
public boolean updateStack(Stack updatedStack, String userId) {
public boolean updateStack(StackModel updatedStackModel, String userId) {
try {
final String query = "UPDATE stacks " +
"SET name=?, date_modified=?, course=?, subject=? " +
"WHERE id=? " +
"AND user_id=? ";

final PreparedStatement stmt = connection.prepareStatement(query);
stmt.setString(1, updatedStack.getName());
stmt.setString(2, updatedStack.getDateModified());
stmt.setString(3, updatedStack.getCourse());
stmt.setString(4, updatedStack.getSubject());
stmt.setString(5, updatedStack.getId());
stmt.setString(1, updatedStackModel.getName());
stmt.setString(2, updatedStackModel.getDateModified());
stmt.setString(3, updatedStackModel.getCourse());
stmt.setString(4, updatedStackModel.getSubject());
stmt.setString(5, updatedStackModel.getId());
stmt.setString(6, userId);

int rowsUpdated = stmt.executeUpdate();
if (rowsUpdated > 0) {
System.out.println("An existing Stack was updated successfully!");
System.out.println("An existing StackModel was updated successfully!");
return true;
}

@@ -373,29 +373,29 @@ public boolean deleteNoteCard(NoteCard noteCard, String userId) {
}

/**
* Delete a specific stack from the database
* Delete a specific stackModel from the database
*
* @param stack
* the stack instance to delete
* @param stackModel
* the stackModel instance to delete
*
* @param userId
* the userId
*
* @return True if the insert was successful. False otherwise.
*/
public boolean deleteStack(Stack stack, String userId) {
public boolean deleteStack(StackModel stackModel, String userId) {
try {
final String query = "DELETE FROM stacks " +
final String query = "DELETE FROM stackModel " +
"WHERE id=? " +
"AND user_id=?";

final PreparedStatement stmt = connection.prepareStatement(query);
stmt.setString(1, stack.getId());
stmt.setString(1, stackModel.getId());
stmt.setString(2, userId);

int rowsUpdated = stmt.executeUpdate();
if (rowsUpdated > 0) {
System.out.println("An existing Stack deleted successfully!");
System.out.println("An existing StackModel deleted successfully!");
return true;
}

@@ -1,16 +1,37 @@
package sample.models.notecardModels.noteCards;

import java.util.ArrayList;
import java.util.List;

/**
* @author rn046359
*/
public class NoteCard {
private String front;
private String back;
private Integer stackIndex;
private Integer stackIndex = 0;
private String id;
public String stackId;
private String stackId;
private boolean isFront;
private boolean hasPics = false;
private List<String> imgPaths = new ArrayList();


public NoteCard() {
}

public NoteCard(String front, String back, String id, ArrayList<String> ImgPaths) {
if (ImgPaths.size() > 0) {
imgPaths = ImgPaths;
hasPics = true;

}

setIsFront(true);
setFront(front);
setBack(back);
setId(id);
}

public String getFront() {
return front;
@@ -52,6 +73,30 @@ public void setStackId(final String stackId) {
this.stackId = stackId;
}

public boolean getIsFront() {
return isFront;
}

public void setIsFront(final boolean front) {
isFront = front;
}

public boolean isHasPics() {
return hasPics;
}

public void setHasPics(final boolean hasPics) {
this.hasPics = hasPics;
}

public List<String> getImgPaths() {
return imgPaths;
}

public void setImgPaths(final List<String> imgPaths) {
this.imgPaths = imgPaths;
}

@Override
public boolean equals(final Object o) {
if (this == o) return true;
@@ -67,6 +112,11 @@ public boolean equals(final Object o) {

}

public void addImg(String url){
imgPaths.add(url);
hasPics = true;

}
@Override
public int hashCode() {
int result = getFront().hashCode();
@@ -5,7 +5,7 @@
/**
* @author rn046359
*/
public class Stack {
public class StackModel {
private String id;
private String name;
private String course;
@@ -75,17 +75,17 @@ public void setId(final String id) {
@Override
public boolean equals(final Object o) {
if (this == o) return true;
if (!(o instanceof Stack)) return false;
if (!(o instanceof StackModel)) return false;

final Stack stack = (Stack) o;
final StackModel stackModel = (StackModel) o;

if (!getId().equals(stack.getId())) return false;
if (!getName().equals(stack.getName())) return false;
if (!getCourse().equals(stack.getCourse())) return false;
if (getSubject() != null ? !getSubject().equals(stack.getSubject()) : stack.getSubject() != null) return false;
if (!getDateCreated().equals(stack.getDateCreated())) return false;
if (!getDateModified().equals(stack.getDateModified())) return false;
return getNoteCards().equals(stack.getNoteCards());
if (!getId().equals(stackModel.getId())) return false;
if (!getName().equals(stackModel.getName())) return false;
if (!getCourse().equals(stackModel.getCourse())) return false;
if (getSubject() != null ? !getSubject().equals(stackModel.getSubject()) : stackModel.getSubject() != null) return false;
if (!getDateCreated().equals(stackModel.getDateCreated())) return false;
if (!getDateModified().equals(stackModel.getDateModified())) return false;
return getNoteCards().equals(stackModel.getNoteCards());

}

@@ -103,7 +103,7 @@ public int hashCode() {

@Override
public String toString() {
return "Stack{" +
return "StackModel{" +
"id='" + id + '\'' +
", name='" + name + '\'' +
", course='" + course + '\'' +