RefactoringRope/RefactoringClient.py

branch
server_client_variant
changeset 187
c7600eee9047
parent 186
d547caa795d7
child 188
05fb0977ce1b
--- a/RefactoringRope/RefactoringClient.py	Sat Sep 23 17:40:07 2017 +0200
+++ b/RefactoringRope/RefactoringClient.py	Sun Sep 24 11:56:11 2017 +0200
@@ -82,6 +82,11 @@
                 self.__calculateInlineArgumentDefaultChanges,
             "CalculateModuleToPackageChanges":
                 self.__calculateModuleToPackageChanges,
+            "RequestFieldName": self.__requestFieldName,
+            "CalculateEncapsulateFieldChanges":
+                self.__calculateEncapsulateFieldChanges,
+            "CalculateLocalToAttributeChanges":
+                self.__calculateLocalToAttributeChanges,
         }
         
         from FileSystemCommands import RefactoringClientFileSystemCommands
@@ -469,7 +474,8 @@
         self.__progressHandle = ProgressHandle(self, params["Title"], False)
         try:
             changes = self.__changes[params["ChangeGroup"]]
-            self.__project.do(changes, self.__progressHandle)
+            if changes is not None:
+                self.__project.do(changes, self.__progressHandle)
         except Exception as err:
             errorDict = self.__handleRopeError(err)
         self.__progressHandle.reset()
@@ -540,7 +546,7 @@
         renameInStrings = params["RenameInStrings"]
         
         errorDict = {}
-        changes = []
+        changes = None
         result = {
             "ChangeGroup": changeGroup,
             "Title": title,
@@ -623,7 +629,7 @@
         writes = params["Writes"]
         
         errorDict = {}
-        changes = []
+        changes = None
         result = {
             "ChangeGroup": changeGroup,
             "Title": title,
@@ -667,7 +673,7 @@
         global_ = params["Global"]
         
         errorDict = {}
-        changes = []
+        changes = None
         result = {
             "ChangeGroup": changeGroup,
             "Title": title,
@@ -751,7 +757,7 @@
         kind = params["Kind"]
         
         errorDict = {}
-        changes = []
+        changes = None
         result = {
             "ChangeGroup": changeGroup,
             "Title": title,
@@ -850,7 +856,7 @@
         destination = params["DestinationModule"]
         
         errorDict = {}
-        changes = []
+        changes = None
         result = {
             "ChangeGroup": changeGroup,
             "Title": title,
@@ -940,7 +946,7 @@
         offset = params["Offset"]
         
         errorDict = {}
-        changes = []
+        changes = None
         result = {
             "ChangeGroup": changeGroup,
             "Title": title,
@@ -983,7 +989,7 @@
         globalFactory = params["GlobalFactory"]
         
         errorDict = {}
-        changes = []
+        changes = None
         result = {
             "ChangeGroup": changeGroup,
             "Title": title,
@@ -1028,7 +1034,7 @@
         parameterName = params["Name"]
         
         errorDict = {}
-        changes = []
+        changes = None
         result = {
             "ChangeGroup": changeGroup,
             "Title": title,
@@ -1067,7 +1073,7 @@
         methodName = params["MethodName"]
         
         errorDict = {}
-        changes = []
+        changes = None
         result = {
             "ChangeGroup": changeGroup,
             "Title": title,
@@ -1125,7 +1131,7 @@
         imports = params["Imports"]
         
         errorDict = {}
-        changes = []
+        changes = None
         result = {
             "ChangeGroup": changeGroup,
             "Title": title,
@@ -1206,6 +1212,7 @@
         doHierarchy = params["Hierarchy"]
         
         errorDict = {}
+        changes = None
         result = {
             "ChangeGroup": changeGroup,
             "Title": title,
@@ -1263,6 +1270,7 @@
         argumentIndex = params["Index"]
         
         errorDict = {}
+        changes = None
         result = {
             "ChangeGroup": changeGroup,
             "Title": title,
@@ -1304,6 +1312,7 @@
         filename = params["FileName"]
         
         errorDict = {}
+        changes = None
         result = {
             "ChangeGroup": changeGroup,
             "Title": title,
@@ -1336,6 +1345,137 @@
         result.update(errorDict)
         
         self.sendJson("Changes", result)
+    
+    def __requestFieldName(self, params):
+        """
+        Private method to calculate the 'Field Name' based on the parameters
+        sent by the server.
+        
+        @param params dictionary containing the method parameters sent by
+            the server
+        @type dict
+        """
+        changeGroup = params["ChangeGroup"]
+        title = params["Title"]
+        filename = params["FileName"]
+        offset = params["Offset"]
+        
+        errorDict = {}
+        result = {
+            "Subcommand": "FieldName",
+            "ChangeGroup": changeGroup,
+            "Title": title,
+        }
+        
+        import rope.refactor.encapsulate_field
+        resource = rope.base.libutils.path_to_resource(
+            self.__project, filename)
+        try:
+            encapsulateField = \
+                rope.refactor.encapsulate_field.EncapsulateField(
+                    self.__project, resource, offset)
+            result["Name"] = encapsulateField.get_field_name()
+        except Exception as err:
+            errorDict = self.__handleRopeError(err)
+        
+        result.update(errorDict)
+        
+        self.sendJson("Changes", result)
+    
+    def __calculateEncapsulateFieldChanges(self, params):
+        """
+        Private method to calculate the 'Encapsulate Field' changes based on
+        the parameters sent by the server.
+        
+        @param params dictionary containing the method parameters sent by
+            the server
+        @type dict
+        """
+        changeGroup = params["ChangeGroup"]
+        title = params["Title"]
+        filename = params["FileName"]
+        offset = params["Offset"]
+        getter = params["Getter"]
+        setter = params["Setter"]
+        
+        errorDict = {}
+        changes = None
+        result = {
+            "ChangeGroup": changeGroup,
+            "Title": title,
+        }
+        
+        import rope.refactor.encapsulate_field
+        resource = rope.base.libutils.path_to_resource(
+            self.__project, filename)
+        self.__progressHandle = ProgressHandle(self, title, True)
+        try:
+            encapsulateField = \
+                rope.refactor.encapsulate_field.EncapsulateField(
+                    self.__project, resource, offset)
+            changes = encapsulateField.get_changes(
+                getter=getter, setter=setter,
+                task_handle=self.__progressHandle)
+        except Exception as err:
+            errorDict = self.__handleRopeError(err)
+        self.__progressHandle.reset()
+        self.__progressHandle = None
+        
+        self.__changes[changeGroup] = changes
+        
+        result["Subcommand"] = "ChangesCalculated"
+        result.update(errorDict)
+        
+        self.sendJson("Changes", result)
+    
+    def __calculateLocalToAttributeChanges(self, params):
+        """
+        Private method to calculate the 'Local Variabe to Attribute' changes
+        based on the parameters sent by the server.
+        
+        @param params dictionary containing the method parameters sent by
+            the server
+        @type dict
+        """
+        changeGroup = params["ChangeGroup"]
+        title = params["Title"]
+        filename = params["FileName"]
+        offset = params["Offset"]
+        
+        errorDict = {}
+        changes = None
+        result = {
+            "ChangeGroup": changeGroup,
+            "Title": title,
+        }
+        
+        import rope.refactor.localtofield
+        resource = rope.base.libutils.path_to_resource(
+            self.__project, filename)
+        try:
+            changes = rope.refactor.localtofield.LocalToField(
+                self.__project, resource, offset).get_changes()
+        except Exception as err:
+            errorDict = self.__handleRopeError(err)
+        
+        self.__changes[changeGroup] = changes
+        
+        # send the change description first
+        if changes:
+            description = changes.description
+        else:
+            description = ""
+        self.sendJson("Changes", {
+            "ChangeGroup": changeGroup,
+            "Title": title,
+            "Subcommand": "ChangeDescription",
+            "Description": description,
+        })
+        
+        result["Subcommand"] = "ChangesCalculated"
+        result.update(errorDict)
+        
+        self.sendJson("Changes", result)
 
 
 if __name__ == '__main__':

eric ide

mercurial