def enterConstructorDeclaration(self, ctx: JavaParserLabeled.ConstructorDeclarationContext): if self.is_source_class or self.is_target_class: if ctx.formalParameters().formalParameterList(): constructor_parameters = [ctx.formalParameters().formalParameterList().children[i] for i in range(len(ctx.formalParameters().formalParameterList().children)) if i % 2 == 0] else: constructor_parameters = [] constructor_text = '' for modifier in ctx.parentCtx.parentCtx.modifier(): constructor_text += modifier.getText() + ' ' if self.is_source_class: constructor_text += self.target_class else: constructor_text += ctx.IDENTIFIER().getText() constructor_text += ' ( ' for parameter in constructor_parameters: constructor_text += parameter.typeType().getText() + ' ' constructor_text += parameter.variableDeclaratorId().getText() + ', ' if constructor_parameters: constructor_text = constructor_text[:len(constructor_text) - 2] constructor_text += ')\n\t{' constructor_text += self.token_stream_rewriter.getText( program_name=self.token_stream_rewriter.DEFAULT_PROGRAM_NAME, start=ctx.block().start.tokenIndex + 1, stop=ctx.block().stop.tokenIndex - 1 ) constructor_text += '}\n' if self.is_source_class: self.source_class_data['constructors'].append(ConstructorOrMethod( name=self.target_class, parameters=[Parameter(parameter_type=p.typeType().getText(), name=p.variableDeclaratorId().IDENTIFIER().getText()) for p in constructor_parameters], text=constructor_text, constructor_body=self.token_stream_rewriter.getText( program_name=self.token_stream_rewriter.DEFAULT_PROGRAM_NAME, start=ctx.block().start.tokenIndex + 1, stop=ctx.block().stop.tokenIndex - 1 ))) else: self.target_class_data['constructors'].append(ConstructorOrMethod( name=self.target_class, parameters=[Parameter(parameter_type=p.typeType().getText(), name=p.variableDeclaratorId().IDENTIFIER().getText()) for p in constructor_parameters], text=constructor_text, constructor_body=self.token_stream_rewriter.getText( program_name=self.token_stream_rewriter.DEFAULT_PROGRAM_NAME, start=ctx.block().start.tokenIndex + 1, stop=ctx.block().stop.tokenIndex - 1 ))) proper_constructor = get_proper_constructor(self.target_class_data['constructors'][-1], self.source_class_data['constructors']) if proper_constructor is None: return self.token_stream_rewriter.insertBeforeIndex( index=ctx.stop.tokenIndex, text=proper_constructor.constructorBody )
def exitConstructorDeclaration( self, ctx: JavaParserLabeled.ConstructorDeclarationContext): if self.is_source_class and self.is_in_constructor: move_constructor_flag = False for field in self.fields_in_constructor: if field in self.moved_fields: move_constructor_flag = True for method in self.methods_in_constructor: if method in self.moved_methods: move_constructor_flag = True if move_constructor_flag: # start_index = ctx.parentCtx.parentCtx.start.tokenIndex # stop_index = ctx.parentCtx.parentCtx.stop.tokenIndex if ctx.formalParameters().formalParameterList(): constructor_parameters = [ ctx.formalParameters().formalParameterList(). children[i] for i in range( len(ctx.formalParameters().formalParameterList(). children)) if i % 2 == 0 ] else: constructor_parameters = [] constructor_text = '' for modifier in ctx.parentCtx.parentCtx.modifier(): constructor_text += modifier.getText() + ' ' # constructor_text += ctx.IDENTIFIER().getText()#====== constructor_text += self.new_class constructor_text += ' ( ' for parameter in constructor_parameters: constructor_text += parameter.typeType().getText() + ' ' constructor_text += parameter.variableDeclaratorId( ).getText() + ', ' if constructor_parameters: constructor_text = constructor_text[:len(constructor_text ) - 2] constructor_text += ')\n\t{' constructor_text += self.token_stream_rewriter.getText( program_name=self.token_stream_rewriter. DEFAULT_PROGRAM_NAME, start=ctx.block().start.tokenIndex + 1, stop=ctx.block().stop.tokenIndex - 1) constructor_text += '}\n' self.code += constructor_text start_index = ctx.parentCtx.parentCtx.start.tokenIndex stop_index = ctx.parentCtx.parentCtx.stop.tokenIndex self.token_stream_rewriter.delete( program_name=self.token_stream_rewriter. DEFAULT_PROGRAM_NAME, from_idx=start_index, to_idx=stop_index) self.is_in_constructor = False
def enterConstructorDeclaration( self, ctx: JavaParserLabeled.ConstructorDeclarationContext): if self.inProducts == True: Parameter = "" if ctx.formalParameters().children.__len__() > 0: ParamChild = ctx.formalParameters().children[1] for i in range(0, ParamChild.children.__len__(), 2): Parameter += ParamChild.children[i].stop.text + "," Parameter = Parameter[:-1] self.productConstructorParam[self.currentClass] = Parameter ParamList = self.token_stream_rewriter.getText( program_name=self.token_stream_rewriter.DEFAULT_PROGRAM_NAME, start=ctx.formalParameters().LPAREN().symbol.tokenIndex, stop=ctx.formalParameters().RPAREN().symbol.tokenIndex) Method = "\t" + self.interfaceName + " create" + \ self.currentClass + ParamList + \ "{\n\t\t" + "return new " + self.currentClass + "(" + Parameter + ");\n\t}\n" self.productConstructorMethod.append(Method)
def enterConstructorDeclaration(self, ctx: JavaParserLabeled.ConstructorDeclarationContext): params = ctx.formalParameters().getText() if params == "()": self.has_empty_cons = True