diff --git a/src/main/java/com/rohitawate/everest/controllers/auth/AuthTabController.java b/src/main/java/com/rohitawate/everest/controllers/auth/AuthTabController.java index d16da67..7009138 100644 --- a/src/main/java/com/rohitawate/everest/controllers/auth/AuthTabController.java +++ b/src/main/java/com/rohitawate/everest/controllers/auth/AuthTabController.java @@ -5,6 +5,7 @@ import com.rohitawate.everest.auth.BasicAuthProvider; import com.rohitawate.everest.auth.DigestAuthProvider; import com.rohitawate.everest.controllers.DashboardController; import com.rohitawate.everest.state.ComposerState; +import com.rohitawate.everest.sync.DataManager; import javafx.fxml.FXML; import javafx.fxml.FXMLLoader; import javafx.fxml.Initializable; @@ -69,6 +70,15 @@ public class AuthTabController implements Initializable { } public void getState(ComposerState state) { + switch (authTabPane.getSelectionModel().getSelectedIndex()) { + case 0: + state.authMethod = DataManager.BASIC; + break; + case 1: + state.authMethod = DataManager.DIGEST; + break; + } + state.basicUsername = basicController.getUsername(); state.basicPassword = basicController.getPassword(); state.basicEnabled = basicController.isSelected(); @@ -81,6 +91,14 @@ public class AuthTabController implements Initializable { public void setState(ComposerState state) { basicController.setState(state.basicUsername, state.basicPassword, state.basicEnabled); digestController.setState(state.digestUsername, state.digestPassword, state.digestEnabled); + + switch (state.authMethod) { + case DataManager.BASIC: + authTabPane.getSelectionModel().select(0); + break; + case DataManager.DIGEST: + authTabPane.getSelectionModel().select(1); + } } public void setDashboard(DashboardController dashboard) { diff --git a/src/main/java/com/rohitawate/everest/state/ComposerState.java b/src/main/java/com/rohitawate/everest/state/ComposerState.java index b1f38c8..eea5d04 100644 --- a/src/main/java/com/rohitawate/everest/state/ComposerState.java +++ b/src/main/java/com/rohitawate/everest/state/ComposerState.java @@ -26,6 +26,7 @@ import java.util.List; public class ComposerState { public String target; public String httpMethod; + public String authMethod; public List params; public List headers; @@ -65,6 +66,7 @@ public class ComposerState { ComposerState state = (ComposerState) o; if (!target.equals(state.target)) return false; if (!httpMethod.equals(state.httpMethod)) return false; + if (!authMethod.equals(state.authMethod)) return false; if (!params.equals(state.params)) return false; if (!headers.equals(state.headers)) return false; if (!basicUsername.equals(state.basicUsername)) return false; diff --git a/src/main/java/com/rohitawate/everest/sync/DataManager.java b/src/main/java/com/rohitawate/everest/sync/DataManager.java index 3cc8fe2..478b189 100644 --- a/src/main/java/com/rohitawate/everest/sync/DataManager.java +++ b/src/main/java/com/rohitawate/everest/sync/DataManager.java @@ -8,6 +8,16 @@ import java.util.List; * Manages the history and (in the future) the projects of Everest. */ public interface DataManager { + String HEADER = "Header"; + String PARAM = "Param"; + String URL_STRING = "URLString"; + String FORM_STRING = "FormString"; + String AUTH_METHOD = "AuthMethod"; + String FILE = "File"; + String BASIC = "Basic"; + String DIGEST = "Digest"; + String ID = "ID"; + /** * Saves the state of the Composer when the request was made. */ diff --git a/src/main/java/com/rohitawate/everest/sync/SQLiteManager.java b/src/main/java/com/rohitawate/everest/sync/SQLiteManager.java index e1a11f8..bd4804f 100644 --- a/src/main/java/com/rohitawate/everest/sync/SQLiteManager.java +++ b/src/main/java/com/rohitawate/everest/sync/SQLiteManager.java @@ -36,7 +36,7 @@ class SQLiteManager implements DataManager { private static class Queries { private static final String[] CREATE_QUERIES = { - "CREATE TABLE IF NOT EXISTS Requests(ID INTEGER PRIMARY KEY, Type TEXT NOT NULL, Target TEXT NOT NULL, Date TEXT NOT NULL)", + "CREATE TABLE IF NOT EXISTS Requests(ID INTEGER PRIMARY KEY, Type TEXT NOT NULL, Target TEXT NOT NULL, AuthMethod TEXT, Date TEXT NOT NULL)", "CREATE TABLE IF NOT EXISTS RequestContentMap(RequestID INTEGER, ContentType TEXT NOT NULL, FOREIGN KEY(RequestID) REFERENCES Requests(ID))", "CREATE TABLE IF NOT EXISTS Bodies(RequestID INTEGER, Type TEXT NOT NULL CHECK(Type IN ('application/json', 'application/xml', 'text/html', 'text/plain')), Body TEXT NOT NULL, FOREIGN KEY(RequestID) REFERENCES Requests(ID))", "CREATE TABLE IF NOT EXISTS FilePaths(RequestID INTEGER, Path TEXT NOT NULL, FOREIGN KEY(RequestID) REFERENCES Requests(ID))", @@ -44,7 +44,7 @@ class SQLiteManager implements DataManager { "CREATE TABLE IF NOT EXISTS SimpleAuthCredentials(RequestID INTEGER, Type TEXT NOT NULL, Username TEXT NOT NULL, Password TEXT NOT NULL, Enabled INTEGER CHECK (Enabled IN (1, 0)), FOREIGN KEY(RequestID) REFERENCES Requests(ID))" }; - private static final String SAVE_REQUEST = "INSERT INTO Requests(Type, Target, Date) VALUES(?, ?, ?)"; + private static final String SAVE_REQUEST = "INSERT INTO Requests(Type, Target, AuthMethod, Date) VALUES(?, ?, ?, ?)"; private static final String SAVE_REQUEST_CONTENT_PAIR = "INSERT INTO RequestContentMap(RequestID, ContentType) VALUES(?, ?)"; private static final String SAVE_BODY = "INSERT INTO Bodies(RequestID, Body, Type) VALUES(?, ?, ?)"; private static final String SAVE_FILE_PATH = "INSERT INTO FilePaths(RequestID, Path) VALUES(?, ?)"; @@ -59,15 +59,6 @@ class SQLiteManager implements DataManager { private static final String SELECT_MOST_RECENT_REQUEST = "SELECT * FROM Requests ORDER BY ID DESC LIMIT 1"; } - private static final String ID = "ID"; - private static final String HEADER = "Header"; - private static final String PARAM = "Param"; - private static final String URL_STRING = "URLString"; - private static final String FORM_STRING = "FormString"; - private static final String FILE = "File"; - private static final String BASIC = "Basic"; - private static final String DIGEST = "Digest"; - public SQLiteManager() { try { String configPath = "Everest/config/"; @@ -107,7 +98,8 @@ class SQLiteManager implements DataManager { statement.setString(1, newState.httpMethod); statement.setString(2, newState.target); - statement.setString(3, LocalDate.now().toString()); + statement.setString(3, newState.authMethod); + statement.setString(4, LocalDate.now().toString()); statement.executeUpdate(); // Get latest RequestID to insert into Headers table @@ -184,6 +176,7 @@ class SQLiteManager implements DataManager { state = new ComposerState(); state.target = resultSet.getString("Target"); + state.authMethod = resultSet.getString(AUTH_METHOD); int requestID = resultSet.getInt(ID); state.headers = getTuples(requestID, HEADER); @@ -304,6 +297,7 @@ class SQLiteManager implements DataManager { requestID = RS.getInt(ID); lastRequest.target = RS.getString("Target"); lastRequest.httpMethod = RS.getString("Type"); + lastRequest.authMethod = RS.getString(AUTH_METHOD); } getSimpleAuthCredentials(lastRequest, requestID, BASIC);