Refactoring. Introducing a separate listener for each message type recieved.
This commit is contained in:
parent
9bdfb6b538
commit
0a580f8c53
13 changed files with 146 additions and 361 deletions
|
|
@ -1,6 +1,6 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<classpath>
|
<classpath>
|
||||||
<classpathentry excluding="com/coder/client/gui/GUIManager.java|com/coder/client/CoderClient2.java|com/coder/client/LoginDialog.java|com/coder/client/ProjectEditorWindow.java|com/coder/client/ProjectFileTreeModel.java|com/coder/client/LoginCridentials.java|com/coder/client/ProjectSelectDialog.java|com/coder/client/gui/GUI_TEST_MAIN.java" kind="src" path="src"/>
|
<classpathentry kind="src" path="src"/>
|
||||||
<classpathentry combineaccessrules="false" kind="src" path="/CoderServer"/>
|
<classpathentry combineaccessrules="false" kind="src" path="/CoderServer"/>
|
||||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/java-8-openjdk-i386"/>
|
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/java-8-openjdk-i386"/>
|
||||||
<classpathentry kind="lib" path="lib/controlsfx-8.20.9.jar"/>
|
<classpathentry kind="lib" path="lib/controlsfx-8.20.9.jar"/>
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
package com.coder.client;
|
package com.coder.client;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
|
|
@ -18,6 +19,11 @@ import com.coder.client.gui.selectProject.SelectProjectDialog;
|
||||||
import com.coder.client.gui.selectProject.SelectProjectDialogListener;
|
import com.coder.client.gui.selectProject.SelectProjectDialogListener;
|
||||||
import com.coder.client.gui.selectServer.SelectServerDialog;
|
import com.coder.client.gui.selectServer.SelectServerDialog;
|
||||||
import com.coder.client.gui.selectServer.SelectServerDialogListener;
|
import com.coder.client.gui.selectServer.SelectServerDialogListener;
|
||||||
|
import com.coder.client.session.ProjectListRspMsgListener;
|
||||||
|
import com.coder.client.session.ProjectRspMsgListener;
|
||||||
|
import com.coder.client.session.ProjectTypeRspMsgListener;
|
||||||
|
import com.coder.client.session.Session;
|
||||||
|
import com.coder.client.session.SessionListener;
|
||||||
import com.coder.server.message.*;
|
import com.coder.server.message.*;
|
||||||
|
|
||||||
import zutil.log.CompactLogFormatter;
|
import zutil.log.CompactLogFormatter;
|
||||||
|
|
@ -31,6 +37,7 @@ import javafx.stage.Stage;
|
||||||
|
|
||||||
public class CoderClient extends Application{
|
public class CoderClient extends Application{
|
||||||
public static final Logger logger = LogUtil.getLogger();
|
public static final Logger logger = LogUtil.getLogger();
|
||||||
|
private HashSet<SessionListener> sessionListeners = new HashSet<SessionListener>();
|
||||||
|
|
||||||
private Session session;
|
private Session session;
|
||||||
private Stage mainStage;
|
private Stage mainStage;
|
||||||
|
|
@ -197,6 +204,10 @@ public class CoderClient extends Application{
|
||||||
logger.warning("Cannot setup session listeners for a non-authenticated session. ignoring call.");
|
logger.warning("Cannot setup session listeners for a non-authenticated session. ignoring call.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
//indicate for listeners that a new session is up
|
||||||
|
for(SessionListener listener : sessionListeners){
|
||||||
|
listener.sessionUp(session);
|
||||||
|
}
|
||||||
// create a guard for when the session is closed
|
// create a guard for when the session is closed
|
||||||
new Thread(new Runnable(){
|
new Thread(new Runnable(){
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -218,69 +229,8 @@ public class CoderClient extends Application{
|
||||||
Thread.yield();
|
Thread.yield();
|
||||||
}
|
}
|
||||||
logger.fine("terminating session guard");
|
logger.fine("terminating session guard");
|
||||||
}}).start();
|
|
||||||
session.addCoderMessageReceivedListener(new CoderMessageReceivedListener() {
|
|
||||||
@Override
|
|
||||||
public void projectListRspReceived(final ProjectListRspMsg projectListRsp) {
|
|
||||||
logger.fine("a ProjectListRsp received");
|
|
||||||
Platform.runLater(new Runnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
for(String projectName : projectListRsp.keySet()){
|
|
||||||
ProjectListData projectData = projectListRsp.get(projectName);
|
|
||||||
selectProjectDialog.addProjectToList(projectName, projectData);
|
|
||||||
}
|
}
|
||||||
}
|
}).start();
|
||||||
});
|
|
||||||
}
|
|
||||||
@Override
|
|
||||||
public void projectRspReceived(final ProjectRspMsg projectRspMsg) {
|
|
||||||
logger.fine("a ProjectRspMsg received");
|
|
||||||
Platform.runLater(new Runnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
if(projectRspMsg.error != null){
|
|
||||||
logger.severe("Server responded on the project request with the following error message: " + projectRspMsg.error);
|
|
||||||
selectProjectDialog.setProject(null);
|
|
||||||
if(projectSelectionWindow != null){
|
|
||||||
projectSelectionWindow.setErrorMessage("ERROR: " + projectRspMsg.error);
|
|
||||||
projectSelectionWindow.showOnStage(mainStage);
|
|
||||||
return;
|
|
||||||
}else{
|
|
||||||
selectProjectDialog.setErrorMessage("ERROR: " + projectRspMsg.error);
|
|
||||||
selectProjectDialog.showOnStage(mainStage);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}else{
|
|
||||||
if(projectSelectionWindow != null){
|
|
||||||
projectSelectionWindow.setErrorMessage("");
|
|
||||||
}
|
|
||||||
editorWindow.setProjectName(projectRspMsg.name);
|
|
||||||
|
|
||||||
Properties projectConfig = projectRspMsg.config;
|
|
||||||
String projectDescription = projectRspMsg.description;
|
|
||||||
List<String> projectFileList = projectRspMsg.fileList;
|
|
||||||
String projectName = projectRspMsg.name;
|
|
||||||
String projectType = projectRspMsg.type;
|
|
||||||
//TODO: handle msg
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
@Override
|
|
||||||
public void projectTypeRspReceived(final ProjectTypeRspMsg projectTypeRsp) {
|
|
||||||
logger.fine("a ProjectTypeRspMsg received");
|
|
||||||
Platform.runLater(new Runnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
for(String typeName : projectTypeRsp.keySet()){
|
|
||||||
SupportedProperties typeData = projectTypeRsp.get(typeName);
|
|
||||||
newProjectDialog.addProjectTypeToList(typeName, typeData);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setupSelectProjectDialog() throws IOException {
|
private void setupSelectProjectDialog() throws IOException {
|
||||||
|
|
@ -327,6 +277,26 @@ public class CoderClient extends Application{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
this.sessionListeners.add(new SessionListener() {
|
||||||
|
@Override
|
||||||
|
public void sessionUp(Session session) {
|
||||||
|
session.addProjectListRspMsgListener(new ProjectListRspMsgListener() {
|
||||||
|
@Override
|
||||||
|
public void messageReceived(final ProjectListRspMsg msg) {
|
||||||
|
logger.fine("a ProjectListRsp received");
|
||||||
|
Platform.runLater(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
for(String projectName : msg.keySet()){
|
||||||
|
ProjectListData projectData = msg.get(projectName);
|
||||||
|
selectProjectDialog.addProjectToList(projectName, projectData);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setupNewProjectDialog() throws IOException {
|
private void setupNewProjectDialog() throws IOException {
|
||||||
|
|
@ -374,6 +344,26 @@ public class CoderClient extends Application{
|
||||||
selectProjectDialog.showOnStage(mainStage);
|
selectProjectDialog.showOnStage(mainStage);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
this.sessionListeners.add(new SessionListener() {
|
||||||
|
@Override
|
||||||
|
public void sessionUp(Session session) {
|
||||||
|
session.addProjectTypeRspMsgListener(new ProjectTypeRspMsgListener() {
|
||||||
|
@Override
|
||||||
|
public void messageReceived(final ProjectTypeRspMsg msg) {
|
||||||
|
logger.fine("a ProjectTypeRspMsg received");
|
||||||
|
Platform.runLater(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
for(String typeName : msg.keySet()){
|
||||||
|
SupportedProperties typeData = msg.get(typeName);
|
||||||
|
newProjectDialog.addProjectTypeToList(typeName, typeData);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setupEditWindow() throws IOException {
|
private void setupEditWindow() throws IOException {
|
||||||
|
|
@ -418,6 +408,52 @@ public class CoderClient extends Application{
|
||||||
Platform.exit();
|
Platform.exit();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
sessionListeners.add(new SessionListener() {
|
||||||
|
@Override
|
||||||
|
public void sessionUp(Session session) {
|
||||||
|
session.addProjectRspMsgListener(new ProjectRspMsgListener() {
|
||||||
|
@Override
|
||||||
|
public void messageReceived(final ProjectRspMsg msg) {
|
||||||
|
logger.fine("a ProjectRspMsg received");
|
||||||
|
Platform.runLater(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
if(msg.error != null){
|
||||||
|
logger.severe("Server responded on the project request with the following error message: " + msg.error);
|
||||||
|
selectProjectDialog.setProject(null);
|
||||||
|
if(projectSelectionWindow != null){
|
||||||
|
projectSelectionWindow.setErrorMessage("ERROR: " + msg.error);
|
||||||
|
projectSelectionWindow.showOnStage(mainStage);
|
||||||
|
return;
|
||||||
|
}else{
|
||||||
|
selectProjectDialog.setErrorMessage("ERROR: " + msg.error);
|
||||||
|
selectProjectDialog.showOnStage(mainStage);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
if(projectSelectionWindow != null){
|
||||||
|
projectSelectionWindow.setErrorMessage("");
|
||||||
|
}
|
||||||
|
editorWindow.setProjectName(msg.name);
|
||||||
|
|
||||||
|
Properties projectConfig = msg.config;
|
||||||
|
String projectDescription = msg.description;
|
||||||
|
List<String> fileList = msg.fileList;
|
||||||
|
String projectType = msg.type;
|
||||||
|
//TODO: handle msg
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
session.addProjectTypeRspMsgListener(new ProjectTypeRspMsgListener() {
|
||||||
|
@Override
|
||||||
|
public void messageReceived(ProjectTypeRspMsg msg) {
|
||||||
|
//TODO: update the project properties
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setupSSDPClient() throws IOException{
|
private void setupSSDPClient() throws IOException{
|
||||||
|
|
|
||||||
|
|
@ -1,12 +0,0 @@
|
||||||
package com.coder.client;
|
|
||||||
|
|
||||||
import com.coder.server.message.*;
|
|
||||||
|
|
||||||
public interface CoderMessageReceivedListener {
|
|
||||||
|
|
||||||
//project messages
|
|
||||||
void projectTypeRspReceived(ProjectTypeRspMsg projectTypeRsp);
|
|
||||||
void projectListRspReceived(ProjectListRspMsg projectListRsp);
|
|
||||||
void projectRspReceived(ProjectRspMsg projectRspMsg);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -1,84 +0,0 @@
|
||||||
package com.coder.client.file;
|
|
||||||
|
|
||||||
import java.util.LinkedList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public class ProjectDirectory extends ProjectFileObject {
|
|
||||||
private LinkedList<ProjectFileObject> objectList;
|
|
||||||
|
|
||||||
public ProjectDirectory(String name){
|
|
||||||
super(name);
|
|
||||||
this.objectList = new LinkedList<ProjectFileObject>();
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<ProjectFileObject> getAll(){
|
|
||||||
return objectList;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean containsFile(String fileName){
|
|
||||||
for(ProjectFileObject fileObject : objectList){
|
|
||||||
if(fileObject instanceof ProjectFile){
|
|
||||||
if(fileObject.getName().equals(fileName)){
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void addFile(ProjectFile file){
|
|
||||||
this.objectList.add(file);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void deleteFile(String fileName){
|
|
||||||
for(ProjectFileObject fileObject : objectList){
|
|
||||||
if(fileObject instanceof ProjectFile){
|
|
||||||
if(fileObject.getName().equals(fileName)){
|
|
||||||
this.objectList.remove(fileObject);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean containsDirectory(String dirName){
|
|
||||||
for(ProjectFileObject fileObject : objectList){
|
|
||||||
if(fileObject instanceof ProjectDirectory){
|
|
||||||
if(fileObject.getName().equals(dirName)){
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void addDirectory(String dirName){
|
|
||||||
ProjectDirectory dir = new ProjectDirectory(dirName);
|
|
||||||
this.objectList.add(dir);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void deleteDirectory(String dirName){
|
|
||||||
for(ProjectFileObject fileObject : objectList){
|
|
||||||
if(fileObject instanceof ProjectDirectory){
|
|
||||||
if(fileObject.getName().equals(dirName)){
|
|
||||||
this.objectList.remove(fileObject);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public ProjectDirectory getDirectory(String dirName) {
|
|
||||||
for(ProjectFileObject fileObject : objectList){
|
|
||||||
if(fileObject instanceof ProjectDirectory){
|
|
||||||
if(fileObject.getName().equals(dirName)){
|
|
||||||
return (ProjectDirectory) fileObject;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String toString(){
|
|
||||||
return this.getName();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -1,15 +0,0 @@
|
||||||
package com.coder.client.file;
|
|
||||||
|
|
||||||
public class ProjectFile extends ProjectFileObject{
|
|
||||||
private String filePath;
|
|
||||||
|
|
||||||
public ProjectFile(String name, String filePath) {
|
|
||||||
super(name);
|
|
||||||
this.filePath = filePath;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String toString(){
|
|
||||||
return this.getName() + " ("+filePath+")";
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -1,14 +0,0 @@
|
||||||
package com.coder.client.file;
|
|
||||||
|
|
||||||
public abstract class ProjectFileObject{
|
|
||||||
private String name;
|
|
||||||
|
|
||||||
public ProjectFileObject(String name){
|
|
||||||
this.name = name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getName(){
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -1,124 +0,0 @@
|
||||||
package com.coder.client.file;
|
|
||||||
|
|
||||||
public class ProjectFileTree {
|
|
||||||
private ProjectDirectory root;
|
|
||||||
|
|
||||||
public ProjectFileTree(){
|
|
||||||
this.root = new ProjectDirectory("/");
|
|
||||||
}
|
|
||||||
|
|
||||||
public void printFileTree(){
|
|
||||||
if(root != null){
|
|
||||||
printDirectoryContent(root, 0);
|
|
||||||
}else{
|
|
||||||
System.out.println("File tree not set");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void printDirectoryContent(ProjectDirectory dir, int indentation){
|
|
||||||
for(ProjectFileObject obj : dir.getAll()){
|
|
||||||
if(obj instanceof ProjectDirectory){
|
|
||||||
printIndentation(indentation);
|
|
||||||
System.out.println("DIR:"+obj);
|
|
||||||
printDirectoryContent((ProjectDirectory) obj, indentation+1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for(ProjectFileObject obj : dir.getAll()){
|
|
||||||
if(obj instanceof ProjectFile){
|
|
||||||
printIndentation(indentation);
|
|
||||||
System.out.println("FILE:"+obj);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void printIndentation(int indentation){
|
|
||||||
for(int i = 0; i < indentation; ++i){
|
|
||||||
System.out.print(" ");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean parseFileList(String[] filePaths){
|
|
||||||
ProjectDirectory root = new ProjectDirectory("/");
|
|
||||||
for(String filePath : filePaths){
|
|
||||||
if(filePath.endsWith("/")){
|
|
||||||
System.out.println("SEVERE: file path is not pointing to a file: " + filePath);
|
|
||||||
this.root = null;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
String[] tmp;
|
|
||||||
if(filePath.startsWith("/")){
|
|
||||||
tmp = filePath.substring(1, filePath.length()).split("/");
|
|
||||||
}else{
|
|
||||||
tmp = filePath.split("/");
|
|
||||||
}
|
|
||||||
int i;
|
|
||||||
ProjectDirectory tmpRoot = root;
|
|
||||||
for(i = 0; i < tmp.length-1; ++i){
|
|
||||||
String directoryName = tmp[i];
|
|
||||||
if(directoryName.isEmpty()){
|
|
||||||
System.out.println("SEVERE: a directory name cannot be empty");
|
|
||||||
this.root = null;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if(tmpRoot.containsDirectory(directoryName) == false){
|
|
||||||
tmpRoot.addDirectory(directoryName);
|
|
||||||
}else{
|
|
||||||
//directory already exist
|
|
||||||
}
|
|
||||||
tmpRoot = tmpRoot.getDirectory(directoryName);
|
|
||||||
}
|
|
||||||
String fileName = tmp[i];
|
|
||||||
if(tmpRoot.containsDirectory(fileName)){
|
|
||||||
//logger.sever("File list contains a directory and file with the same name");
|
|
||||||
System.out.println("SEVERE: File list contains a directory and file with the same name");
|
|
||||||
this.root = null;
|
|
||||||
return false;
|
|
||||||
}else if(tmpRoot.containsFile(fileName) == false){
|
|
||||||
ProjectFile file = new ProjectFile(fileName, filePath);
|
|
||||||
tmpRoot.addFile(file);
|
|
||||||
}else{
|
|
||||||
//file already exists
|
|
||||||
}
|
|
||||||
}
|
|
||||||
updateCurrentFileList(root, this.root);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void updateCurrentFileList(ProjectDirectory sourceRoot, ProjectDirectory targetRoot){
|
|
||||||
|
|
||||||
//remove files in target that does not exist in source
|
|
||||||
for(ProjectFileObject targetFileObject : targetRoot.getAll()){
|
|
||||||
String fileObjectName = targetFileObject.getName();
|
|
||||||
if(targetFileObject instanceof ProjectFile){ //target file is a file
|
|
||||||
if(sourceRoot.containsFile(fileObjectName) == false){
|
|
||||||
targetRoot.deleteFile(fileObjectName);
|
|
||||||
targetFileObject = null;
|
|
||||||
}
|
|
||||||
}else if(targetFileObject instanceof ProjectDirectory){ //target file is a directory
|
|
||||||
if(sourceRoot.containsDirectory(fileObjectName) == false){
|
|
||||||
targetRoot.deleteDirectory(fileObjectName);
|
|
||||||
targetFileObject = null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//add files to target that exist in source
|
|
||||||
for(ProjectFileObject sourceFileObject : sourceRoot.getAll()){
|
|
||||||
String fileObjectName = sourceFileObject.getName();
|
|
||||||
if(sourceFileObject instanceof ProjectFile){ //source file is a file
|
|
||||||
if(targetRoot.containsFile(fileObjectName) == false){
|
|
||||||
ProjectFile file = (ProjectFile)sourceFileObject;
|
|
||||||
targetRoot.addFile(file);
|
|
||||||
}
|
|
||||||
}else if(sourceFileObject instanceof ProjectDirectory){ //source file is a directory
|
|
||||||
if(targetRoot.containsDirectory(fileObjectName) == false){
|
|
||||||
targetRoot.addDirectory(fileObjectName);
|
|
||||||
}
|
|
||||||
//recursive
|
|
||||||
ProjectDirectory dir = (ProjectDirectory)sourceFileObject;
|
|
||||||
updateCurrentFileList(dir, targetRoot.getDirectory(fileObjectName));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -1,37 +0,0 @@
|
||||||
package com.coder.client.file;
|
|
||||||
|
|
||||||
public class ProjectFileTreeTest {
|
|
||||||
ProjectFileTree tree = new ProjectFileTree();
|
|
||||||
|
|
||||||
public ProjectFileTreeTest(){
|
|
||||||
tree.printFileTree();
|
|
||||||
|
|
||||||
tree.parseFileList(new String[]{"/test"});
|
|
||||||
tree.printFileTree();
|
|
||||||
|
|
||||||
tree.parseFileList(new String[]{"/test", "/test/test"});
|
|
||||||
tree.printFileTree();
|
|
||||||
|
|
||||||
tree.parseFileList(new String[]{"/test/test/"});
|
|
||||||
tree.printFileTree();
|
|
||||||
|
|
||||||
tree.parseFileList(new String[]{"/test/"});
|
|
||||||
tree.printFileTree();
|
|
||||||
|
|
||||||
tree.parseFileList(new String[]{"/"});
|
|
||||||
tree.printFileTree();
|
|
||||||
|
|
||||||
tree.parseFileList(new String[]{"//"});
|
|
||||||
tree.printFileTree();
|
|
||||||
|
|
||||||
tree.parseFileList(new String[]{"//test"});
|
|
||||||
tree.printFileTree();
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void main(String[] args){
|
|
||||||
new ProjectFileTreeTest();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
package com.coder.client.session;
|
||||||
|
|
||||||
|
import com.coder.server.message.ProjectListRspMsg;
|
||||||
|
|
||||||
|
public interface ProjectListRspMsgListener {
|
||||||
|
public void messageReceived(ProjectListRspMsg msg);
|
||||||
|
}
|
||||||
7
src/com/coder/client/session/ProjectRspMsgListener.java
Normal file
7
src/com/coder/client/session/ProjectRspMsgListener.java
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
package com.coder.client.session;
|
||||||
|
|
||||||
|
import com.coder.server.message.ProjectRspMsg;
|
||||||
|
|
||||||
|
public interface ProjectRspMsgListener {
|
||||||
|
public void messageReceived(ProjectRspMsg msg);
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
package com.coder.client.session;
|
||||||
|
|
||||||
|
import com.coder.server.message.ProjectTypeRspMsg;
|
||||||
|
|
||||||
|
public interface ProjectTypeRspMsgListener {
|
||||||
|
public void messageReceived(ProjectTypeRspMsg msg);
|
||||||
|
}
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.coder.client;
|
package com.coder.client.session;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.Socket;
|
import java.net.Socket;
|
||||||
|
|
@ -22,7 +22,9 @@ public class Session extends Thread {
|
||||||
public static final Logger logger = LogUtil.getLogger();
|
public static final Logger logger = LogUtil.getLogger();
|
||||||
private static final int AUTH_HASH_ITERATIONS = 500;
|
private static final int AUTH_HASH_ITERATIONS = 500;
|
||||||
|
|
||||||
private HashSet<CoderMessageReceivedListener> messageReceivedlisteners = new HashSet<CoderMessageReceivedListener>();
|
private HashSet<ProjectListRspMsgListener> projectListRspMsgListeners = new HashSet<ProjectListRspMsgListener>();
|
||||||
|
private HashSet<ProjectRspMsgListener> projectRspMsgListeners = new HashSet<ProjectRspMsgListener>();
|
||||||
|
private HashSet<ProjectTypeRspMsgListener> projectTypeRspMsgListeners = new HashSet<ProjectTypeRspMsgListener>();
|
||||||
|
|
||||||
private boolean authenticated = false;
|
private boolean authenticated = false;
|
||||||
private Socket socket;
|
private Socket socket;
|
||||||
|
|
@ -99,12 +101,16 @@ public class Session extends Thread {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addCoderMessageReceivedListener(CoderMessageReceivedListener listener){
|
public void addProjectListRspMsgListener(ProjectListRspMsgListener listener){
|
||||||
messageReceivedlisteners.add(listener);
|
projectListRspMsgListeners.add(listener);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean removeListener(CoderMessageReceivedListener listener){
|
public void addProjectRspMsgListener(ProjectRspMsgListener listener){
|
||||||
return messageReceivedlisteners.remove(listener);
|
projectRspMsgListeners.add(listener);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addProjectTypeRspMsgListener(ProjectTypeRspMsgListener listener){
|
||||||
|
projectTypeRspMsgListeners.add(listener);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isConnected(){
|
public boolean isConnected(){
|
||||||
|
|
@ -212,20 +218,20 @@ public class Session extends Thread {
|
||||||
logger.fine("Received a CoderMessage");
|
logger.fine("Received a CoderMessage");
|
||||||
if(msg.ProjectListRsp != null){
|
if(msg.ProjectListRsp != null){
|
||||||
logger.fine("The message contains a ProjectListRspMsg");
|
logger.fine("The message contains a ProjectListRspMsg");
|
||||||
for(CoderMessageReceivedListener listener : messageReceivedlisteners){
|
for(ProjectListRspMsgListener listener : projectListRspMsgListeners){
|
||||||
listener.projectListRspReceived(msg.ProjectListRsp);
|
listener.messageReceived(msg.ProjectListRsp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(msg.ProjectRsp != null){
|
if(msg.ProjectRsp != null){
|
||||||
logger.fine("The message contains a ProjectRspMsg");
|
logger.fine("The message contains a ProjectRspMsg");
|
||||||
for(CoderMessageReceivedListener listener : messageReceivedlisteners){
|
for(ProjectRspMsgListener listener : projectRspMsgListeners){
|
||||||
listener.projectRspReceived(msg.ProjectRsp);
|
listener.messageReceived(msg.ProjectRsp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(msg.ProjectTypeRsp != null){
|
if(msg.ProjectTypeRsp != null){
|
||||||
logger.fine("The message contains a ProjectTypeRsp");
|
logger.fine("The message contains a ProjectTypeRsp");
|
||||||
for(CoderMessageReceivedListener listener : messageReceivedlisteners){
|
for(ProjectTypeRspMsgListener listener : projectTypeRspMsgListeners){
|
||||||
listener.projectTypeRspReceived(msg.ProjectTypeRsp);
|
listener.messageReceived(msg.ProjectTypeRsp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
8
src/com/coder/client/session/SessionListener.java
Normal file
8
src/com/coder/client/session/SessionListener.java
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
package com.coder.client.session;
|
||||||
|
|
||||||
|
|
||||||
|
public interface SessionListener {
|
||||||
|
|
||||||
|
void sessionUp(Session session);
|
||||||
|
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue