Package com.vaadin.copilot
Class ProjectFileManager
java.lang.Object
com.vaadin.copilot.ProjectFileManager
-
Constructor Summary
ConstructorsConstructorDescriptionProjectFileManager(com.vaadin.flow.server.startup.ApplicationConfiguration applicationConfiguration) Public only for tests. -
Method Summary
Modifier and TypeMethodDescriptionvoiddeleteFile(File file) findModule(File file) Finds the module where the given resource is located.findResource(String resource) Finds the given resource by name, in any resource folder.findResourceFolder(File resourceFile) Finds the resource folder where the given resource is located.findSourceFolder(File sourceFile) Finds the source folder where the given file is located.static ProjectFileManagerget()getAbsolutePath(String filename) com.vaadin.flow.server.startup.ApplicationConfigurationgetFileForClass(Class<?> cls) Returns the Java file for the given class.getFileForClass(String cls) Returns the Java file for the given class.getFlowNewViewFolder(com.vaadin.flow.server.VaadinSession vaadinSession) Finds the folder where a new Flow view should be created.Returns the frontend folder.Finds the folder where Hilla views should be created for the file system router to pick them up.getJavaPackage(File sourceFile) Gets the java package for the given source fileReturns the java resource folder.Returns the java source folder.Gets the modules in the project.getProjectRelativeName(File projectFile) Returns the name of the file, relative to the project root.Returns the project base folder.Returns the resource folders for the project.getSourceFile(com.vaadin.flow.component.internal.ComponentTracker.Location location) Returns the Java file for the given component location.Returns the source folders for the project.Returns the styles.css file.Gets current theme folder if present, fallbacks to frontend folder if none.Gets current theme namestatic ProjectFileManagerinitialize(com.vaadin.flow.server.startup.ApplicationConfiguration applicationConfiguration) makeAbsolute(String projectRelativeFilename) Deprecated.This rarely ever works as expected because the file you want to write is in one of the Maven modules, not necessarily in the root project.makeRelative(String filename) sanitizeFilename(String name) Makes a string safe to use as a file namevoidWrites the given content to the given file inside the project.voidWrites the given content to the given file inside the project.voidwriteFileBase64(String filename, String undoLabel, String base64Content, boolean renameIfExists)
-
Constructor Details
-
ProjectFileManager
public ProjectFileManager(com.vaadin.flow.server.startup.ApplicationConfiguration applicationConfiguration) Public only for tests. Always access throughget()instead.- Parameters:
applicationConfiguration- the application configuration
-
-
Method Details
-
initialize
public static ProjectFileManager initialize(com.vaadin.flow.server.startup.ApplicationConfiguration applicationConfiguration) -
get
-
readFile
- Throws:
IOException
-
readFile
- Throws:
IOException
-
readFile
- Throws:
IOException
-
readLines
- Throws:
IOException
-
writeFile
Writes the given content to the given file inside the project.If the filename is absolute, it is used as is. Otherwise, it is resolved relative to the project root.
If the file is outside the project, an exception is thrown
- Parameters:
filename- the filename to write to, absolute or relative to the project rootundoLabel- the undo label for the changecontent- the content to write- Throws:
IOException- if the file cannot be written
-
writeFile
Writes the given content to the given file inside the project.If the filename is absolute, it is used as is. Otherwise, it is resolved relative to the project root.
If the file is outside the project, an exception is thrown
- Parameters:
file- the filename to write to, absolute or relative to the project rootundoLabel- the undo label for the changecontent- the content to write- Throws:
IOException- if the file cannot be written
-
writeFile
- Throws:
IOException
-
writeFileBase64
public File writeFileBase64(String filename, String undoLabel, String base64Content, boolean renameIfExists) throws IOException - Throws:
IOException
-
makeAbsolute
Deprecated.This rarely ever works as expected because the file you want to write is in one of the Maven modules, not necessarily in the root project.Changes the relative file name into an absolute file name and validates it is inside the project.- Throws:
IOException
-
makeRelative
- Throws:
IOException
-
getProjectRelativeName
Returns the name of the file, relative to the project root.- Parameters:
projectFile- the file- Returns:
- the relative name of the file
-
getFileForClass
Returns the Java file for the given class.- Parameters:
cls- the class- Returns:
- the file for the class
-
getFileForClass
Returns the Java file for the given class.- Parameters:
cls- the class- Returns:
- the file for the class
-
getSourceFolders
Returns the source folders for the project.- Returns:
- the source folders
-
getResourceFolders
Returns the resource folders for the project.- Returns:
- the resource folders
-
getSourceFile
Returns the Java file for the given component location.- Parameters:
location- the component location- Returns:
- the file for the class where the component is used
-
getProjectRoot
Returns the project base folder.The project base folder is the common folder containing all module roots.
- Returns:
- the project root folder
-
getFrontendFolder
Returns the frontend folder.- Returns:
- the frontend folder
-
getStylesCss
Returns the styles.css file.- Returns:
- the styles.css file
-
getJavaResourceFolder
Returns the java resource folder.- Returns:
- the java resource folder.
-
getJavaSourceFolder
Returns the java source folder.- Returns:
- the java source folder.
-
getThemeName
Gets current theme name- Returns:
- optional theme name
-
getThemeFolder
Gets current theme folder if present, fallbacks to frontend folder if none.- Returns:
- theme folder if present, frontend folder otherwise
-
getAbsolutePath
-
sanitizeFilename
Makes a string safe to use as a file name- Parameters:
name- the string to process- Returns:
- the sanitized string
-
getHillaViewsFolder
Finds the folder where Hilla views should be created for the file system router to pick them up.- Returns:
- the folder where Hilla views should be created
-
getFlowNewViewFolder
Finds the folder where a new Flow view should be created.If all views are in the same package/folder, that folder is returned. If views are in different packages, the folder for a common prefix is returned. If no common prefix is found, the folder for the main package is returned.
- Returns:
- a suitable folder to place a new Flow view in
-
findResource
Finds the given resource by name, in any resource folder.- Parameters:
resource- the name of the resource to look for
-
findResourceFolder
Finds the resource folder where the given resource is located.- Parameters:
resourceFile- the resource to find the resource folder for
-
findModule
Finds the module where the given resource is located.- Parameters:
file- the file to look up
-
findSourceFolder
Finds the source folder where the given file is located.- Parameters:
sourceFile- the source file to find the source folder for
-
getJavaPackage
Gets the java package for the given source file- Parameters:
sourceFile- the source file- Returns:
- the java package for the given source file, or null if the source file is not inside the project
- Throws:
IOException- if something goes wrong
-
getModules
Gets the modules in the project.- Returns:
- a list of modules in the project
-
getApplicationConfiguration
public com.vaadin.flow.server.startup.ApplicationConfiguration getApplicationConfiguration() -
deleteFile
- Throws:
IOException
-