{"id":15923060,"url":"https://github.com/naxa777/file-tree","last_synced_at":"2026-03-01T14:03:40.021Z","repository":{"id":11623847,"uuid":"39502787","full_name":"naXa777/file-tree","owner":"naXa777","description":"Web-based application for browsing and indexing files that observes file changes (kind of a file manager)","archived":false,"fork":false,"pushed_at":"2022-12-16T01:49:19.000Z","size":959,"stargazers_count":0,"open_issues_count":5,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-03T12:52:40.202Z","etag":null,"topics":["file-browser","hacktoberfest","hacktoberfest2022","java","tomcat","trainee-assignment","web-app","xml"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/naXa777.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-07-22T11:37:04.000Z","updated_at":"2022-10-01T08:57:06.000Z","dependencies_parsed_at":"2023-01-11T20:16:52.872Z","dependency_job_id":null,"html_url":"https://github.com/naXa777/file-tree","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/naXa777/file-tree","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/naXa777%2Ffile-tree","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/naXa777%2Ffile-tree/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/naXa777%2Ffile-tree/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/naXa777%2Ffile-tree/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/naXa777","download_url":"https://codeload.github.com/naXa777/file-tree/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/naXa777%2Ffile-tree/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29970544,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-01T13:32:00.443Z","status":"ssl_error","status_checked_at":"2026-03-01T13:32:00.084Z","response_time":124,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["file-browser","hacktoberfest","hacktoberfest2022","java","tomcat","trainee-assignment","web-app","xml"],"created_at":"2024-10-06T20:41:31.763Z","updated_at":"2026-03-01T14:03:39.999Z","avatar_url":"https://github.com/naXa777.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# File Tree\n[![Codeship Status for naXa777/file-tree](https://app.codeship.com/projects/17e4d940-9903-0136-b15a-3601fc6081f4/status?branch=master)](https://app.codeship.com/projects/305398)\n\n## Description\n\n### Task\n\nImplement a web-based file manager that observes file changes. The work has been done in the framework of a practice-based research in computer science that took place in Exadel, 2013.\n\n### Steps\n\n- [x] Implement a file indexing console application  \n  _Implement console application which takes directory path as argument._  \n  The application should:  \n  - [x] Create an index for each file in the target directory. Index should contain file name, file size and last update fields.\n  - [x] Collection of indexes should be serialised as XML on disc.\n  - [x] Before serialisation application should check if previously serialised data for target directory already exists.\n  - [x] Application should print complete report about file changes based on their previous and current index data.\n  - [x] After report old serialised data should be rewritten by actual.\n\n- [x] Provide choice to use DB file indexes storage  \n  _Make application more flexible: provide choice to store file indexes in DB._  \n  - [x] Develop interface for required directory and file indexes operations. Refactor existed code to make it an implementation of the interface.\n  - [x] Develop another implementation of the interface which will use DB as file indexes storage. Write SQL script for DB creation. Store DB settings in application properties file. Use Spring framework JDBC data access abstraction for the implementation.\n  - [x] Use Inversion of Control (IoC) pattern to choose between two implementations. Create Spring context for the application. Select an implementation depending on key from application properties.\n\n- [ ] Create WEB application  \n  _Create WEB application based on existed functionality._  \n  - [x] Use Servlets/JSP technology to develop WEB application. Use Tomcat as J2EE web container.\n  - [x] The application should allow file tree navigation providing list of subdirectories as well as file changes indexes.\n  - [ ] Provide user control for directory file indexes update.\n  - [x] _(Optional)_ Use Spring Web MVC for the implementation.\n\n**Technologies**: Maven, J2EE, Servlets/JSP, Tomcat, MVC, Spring Framework.\n\n## Configuration\n\nYou can choose to store index either in DB or XML.\n\n### MySQL Database\n\n1. Create database. Find and execute `src/main/resources/DB create.sql`.  \n2. Tweak JDBC connection in `jdbc connection.properties` file.  \n3. Set `app.use.implementation` to either `springDBService` or `dbService` in `application.properties` file if you want to use database as a storage.\n\n### XML\n\nSet `app.use.implementation` to `xmlService` in `application.properties` file if you want to use XML-based storage.\n\n## Quick Start\n\n### Build web app\n\n    mvn clean package\n\nOutput: /target/file-tree.war\n\n### Build console app\n\n    mvn clean jar:jar\n    \nOutput: /target/file-tree.jar\n\n### Run web app\n\n1. Deploy the application to Tomcat;\n2. Open [http://localhost:8080/\u0026lt;deploy-path\u0026gt;](http://localhost:8080/file-tree) in a browser;\n3. Guess credentials!\n4. And browse your `D:\\` drive from the browser!\n\n### Run console app\n\n    java -jar ./file-tree.jar \"D:/example\"\n    \nThe first argument is a root folder for indexing.\n\n## Screenshots\n\nState 1    \n![File Tree](/screenshots/filetree_1.png)\n\n_Make changes... Refresh page_\n\nState 2  \n![File Tree](/screenshots/filetree_2.png)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnaxa777%2Ffile-tree","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnaxa777%2Ffile-tree","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnaxa777%2Ffile-tree/lists"}