I'm Nuno Silva, former SysAdmin at IST.
NOTE: "Most Used Languages" does not indicate my skill level or anything like that. It's a GitHub metric of which languages have the most code on GitHub.
Project for the Software Engineering Course, IST, 2016
Regarding the "users without home directories" and "directories/files without an owner" issues mentioned by the teacher, how should we tackle them?
I suggest to take an event-driven approach. What I mean by that is when a user or a directory/file is created, it will notify some central entity, for example the Manager
or the FileSystem
(or even a separate entity), which will make sure that everything is okay(i.e that the user has a home directory and that the directory/file has an owner). If something is not okay, that entity is responsible for correcting the problem, making sure that the business rules are not violated (for example, defaulting the owner of directories/files without an owner to root).
The idea is to centralize the business rules in a single place, that will make making changes to them easier in the future (if necessary).
When working on the FileSystem's constructor I found what I think might be a problem... Are we gonna leave the home directory for the users (/home/username/) as a String or are we going to insert a new Directory in /home/ where the new directories name is the username?
According to es16p1.pdf, the wiki for the first sprint should be finished, in our case, before the lab on 2016/03/07.
The wiki should contain:
See section 6 of guialab.pdf.
What data type should we choose for a user's home director?
String
attributeUser
Choose a template for commit messages.
The current dml does not allow to identify a specific FileSystem
. It needs some sort of identification.
Create and handle exceptions in the code.
Implement the visitor pattern (which will be used in XML exports) to all the classes that can be exported.
Removes a file or an empty directory based on its path.
Requires #7
We need to reveal our dml's and come up with the best solution.
Create method: createSuperUser()
On our DML we initially had the follow relation
relation DirectoryHasFiles {
Directory playsRole directory { multiplicity 1; }
File playsRole file { multiplicity 2..*; }
}
However if we wish it to run properly we need to create at least 2 files(supposedly it would be . and ..) but we wont have a copy of himself(.) in the database.
We should also discuss if we need the .. or if it's useless.
Should be solved before #23 is even thought about.
34d10c3 broke the build
Add functionality to import a FileSystem from XML.
Support deleting a file from a directory.
While analysing this, I found that File
does not need the isDeleted
attribute. File
deletion is handled using a File.remove()
method, which removes it from it's parent Directory
.
See Contact.java for an example (Contact
is a File
and Person
is a Directory
).
This is basically (but not only) the Directory.addFile()
method.
Person.java has an example on how to do this.
needed for #8
Class file needed an extra attribute, something to verify if it was deleted, since java doesn't have delete but instead uses a garbage collector.
just so we dont forget
Implement the Singleton pattern in Manager
class.
Advantages:
Once debated between the group, implement the solution agreed upon.
Project doesn't compile due to class File in dml.
`class File{
String fileName;
User owner; <------- error here
long id;
byte perm;
DateTime lastMod;
}`
We need to convert the 0
's and 1
's to a "human-readable format" (like rwxrwxr-x
). I suggest adding a method to User
(something like .getHRPermissions()
) that takes care of that.
Create methods to import and export XML file
Creates rootDir
Creates Super User
Creates Super User home directory
โข database name: drivedb
โข database user: mydrive
โข datebase password: mydriv3
Check consistency in usernames provided, they must be:
needed for #14
Implement InvalidUsernameException in case username is unacceptable
Self-explanatory exceptions for each error situation.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.