please do it by yourself and don't use works that you used before!!!
Facebook/.classpath
Facebook/.project
Facebook org.eclipse.jdt.core.javabuilder org.eclipse.jdt.core.javanature
Facebook/.settings/org.eclipse.jdt.core.prefs
eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled org.eclipse.jdt.core.compiler.codegen.targetPlatform=10 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve org.eclipse.jdt.core.compiler.compliance=10 org.eclipse.jdt.core.compiler.debug.lineNumber=generate org.eclipse.jdt.core.compiler.debug.localVariable=generate org.eclipse.jdt.core.compiler.debug.sourceFile=generate org.eclipse.jdt.core.compiler.problem.assertIdentifier=error org.eclipse.jdt.core.compiler.problem.enumIdentifier=error org.eclipse.jdt.core.compiler.release=enabled org.eclipse.jdt.core.compiler.source=10
Facebook/bin/Driver.class
public synchronized class Driver { public void Driver(); public static void main(String[]) throws java.io.IOException; }
Facebook/bin/Facebook.class
public synchronized class Facebook implements java.io.Serializable { private static final long serialVersionUID = 1; transient java.util.Scanner keyboard; private java.util.Map users; public void Facebook(); public void printUsers(); public void addUser(); public void deleteUser(); public void getPasswordHelp(); public void friend(); public void defriend(FacebookUser); public void listFriends(); public void getRecommendations(); private void getRecommendations(FacebookUser, java.util.ArrayList); }
Facebook/bin/FacebookUser.class
public synchronized class FacebookUser extends UserAccount implements Comparable, Cloneable, java.io.Serializable { private static final long serialVersionUID = 1; protected String passwordHint; protected java.util.ArrayList friends; public void FacebookUser(String, String); public void setPasswordHint(String); public void friend(FacebookUser); public void defriend(FacebookUser); public java.util.ArrayList getFriends(); public int compareTo(FacebookUser); public void getPasswordHelp(); }
Facebook/bin/UserAccount.class
public abstract synchronized class UserAccount implements java.io.Serializable { private static final long serialVersionUID = 1; protected String username; protected String password; protected boolean active; public void UserAccount(String, String); public boolean checkPassword(String); public void deactivateAccount(); public int hashCode(); public boolean equals(Object); public String toString(); public abstract void getPasswordHelp(); }
Facebook/src/Driver.java
Facebook/src/Driver.java
import
java
.
io
.
IOException
;
import
java
.
util
.
Scanner
;
public
class
Driver
{
public
static
void
main
(
String
[]
args
)
throws
IOException
{
Scanner
keyboard
=
new
Scanner
(
System
.
in
);
Facebook
faceBook
=
new
Facebook
();
// testing
while
(
true
)
{
System
.
out
.
println
(
"Choose an option: 1. List users , 2. Add users, "
+
"3. Delete users, 4. Get password hint, "
+
"5. add a friend, 6. delete a friend, 7. list friends, "
+
"8. recommend new friends, 9. quit "
);
String
op
=
keyboard
.
next
();
if
(
op
.
equalsIgnoreCase
(
"1"
))
{
// list
faceBook
.
printUsers
();
}
else
if
(
op
.
equalsIgnoreCase
(
"2"
))
{
// add
faceBook
.
addUser
();
}
else
if
(
op
.
equalsIgnoreCase
(
"3"
))
{
// delete
faceBook
.
deleteUser
();
}
else
if
(
op
.
equalsIgnoreCase
(
"4"
))
{
// password hint
faceBook
.
getPasswordHelp
();
}
else
if
(
op
.
equalsIgnoreCase
(
"5"
))
{
// friend
faceBook
.
friend
();
}
else
if
(
op
.
equalsIgnoreCase
(
"6"
))
{
// de-friend
faceBook
.
deleteUser
();
}
else
if
(
op
.
equalsIgnoreCase
(
"7"
))
{
// list
faceBook
.
listFriends
();
}
else
if
(
op
.
equalsIgnoreCase
(
"8"
))
{
// recommend
faceBook
.
getRecommendations
();
}
else
if
(
op
.
equalsIgnoreCase
(
"9"
))
{
// quit
// create serialized object before program ends
System
.
out
.
println
(
""
);
System
.
out
.
println
(
"exiting..."
);
System
.
exit
(
0
);
}
else
{
System
.
out
.
println
(
"Error, Please choose from the available list."
);
}
}
// end loop
}
}
// end
Facebook/src/Facebook.java
Facebook/src/Facebook.java
import
java
.
io
.
Serializable
;
import
java
.
util
.
ArrayList
;
import
java
.
util
.
HashMap
;
import
java
.
util
.
Map
;
import
java
.
util
.
Scanner
;
public
class
Facebook
implements
Serializable
{
//implements facebook
/**
*
*/
private
static
final
long
serialVersionUID
=
1L
;
transient
Scanner
keyboard
=
new
Scanner
(
System
.
in
);
private
Map
<
String
,
FacebookUser
>
users
;
public
Facebook
()
{
users
=
new
HashMap
<
String
,
FacebookUser
>
();
}
// list users
public
void
printUsers
()
{
for
(
String
key
:
users
.
keySet
())
{
System
.
out
.
println
(
users
.
get
(
key
));
}
}
// adds a user
public
void
addUser
()
{
//add friend
System
.
out
.
println
(
"Please enter a username."
);
String
username
=
keyboard
.
nextLine
();
if
(
users
.
containsKey
(
username
))
{
System
.
out
.
println
(
"that user exist"
);
}
else
{
System
.
out
.
println
(
"Please enter a password."
);
String
password
=
keyboard
.
nextLine
();
System
.
out
.
println
(
"Please enter a password hint."
);
String
passWordHint
=
keyboard
.
nextLine
();
FacebookUser
facebookUser
=
new
FacebookUser
(
username
,
password
);
facebookUser
.
setPasswordHint
(
passWordHint
);
users
.
put
(
username
,
facebookUser
);
}
}
// deletes a user
public
void
deleteUser
()
{
System
.
out
.
println
(
"Please enter a username."
);
String
username
=
keyboard
.
nextLine
();
if
(
users
.
containsKey
(
username
))
{
FacebookUser
facebookUser
=
users
.
get
(
username
);
System
.
out
.
println
(
"Please enter a password"
);
String
password
=
keyboard
.
nextLine
();
if
(
facebookUser
.
password
.
equals
(
password
))
{
users
.
remove
(
username
);
System
.
out
.
println
(
"User Removed"
);
}
}
else
{
System
.
out
.
println
(
"That username does not exist"
);
}
}
// get password hint
public
void
getPasswordHelp
()
{
System
.
out
.
println
(
"Please enter a username."
);
String
username
=
keyboard
.
nextLine
();
if
(
users
.
containsKey
(
username
))
{
FacebookUser
facebookUser
=
users
.
get
(
username
);
facebookUser
.
getPasswordHelp
();
}
else
{
System
.
out
.
println
(
"That user does not exist"
);
}
}
// add a friend
public
void
friend
()
{
System
.
out
.
println
(
"Please enter a username."
);
String
username
=
keyboard
.
nextLine
();
if
(
username
!=
null
&&
!
users
.
containsKey
(
username
))
{
System
.
out
.
println
(
"that user does not exist"
);
}
else
{
FacebookUser
facebookUser
=
users
.
get
(
username
);
System
.
out
.
println
(
"Please enter a password."
);
String
password
=
keyboard
.
nextLine
();
if
(
facebookUser
.
password
.
equals
(
password
))
{
System
.
out
.
println
(
"Please enter a friend's name"
);
String
friendName
=
keyboard
.
nextLine
();
if
(
friendName
.
equals
(
username
))
{
System
.
out
.
println
(
"You cannot friend yourself"
);
}
else
{
FacebookUser
friend
=
users
.
get
(
friendName
);
facebookUser
.
friend
(
friend
);
users
.
put
(
username
,
facebookUser
);
}
}
}
}
// delete a friend
public
void
defriend
(
FacebookUser
formerFriend
)
{
System
.
out
.
println
(
"Please enter a username."
);
String
username
=
keyboard
.
nextLine
();
if
(
username
!=
null
&&
!
users
.
containsKey
(
username
))
{
System
.
out
.
println
(
"that user does not exist"
);
}
else
{
FacebookUser
facebookUser
=
users
.
get
(
username
);
System
.
out
.
println
(
"Please enter a password."
);
String
password
=
keyboard
.
nextLine
();
if
(
facebookUser
.
password
.
equals
(
password
))
{
System
.
out
.
println
(
"Please enter a friend's name"
);
String
friendName
=
keyboard
.
nextLine
();
if
(
friendName
.
equals
(
username
))
{
System
.
out
.
println
(
"You cannot de-friend yourself"
);
}
else
{
FacebookUser
friend
=
users
.
get
(
friendName
);
facebookUser
.
defriend
(
friend
);
}
}
}
}
// list User's friends
public
void
listFriends
()
{
System
.
out
.
println
(
"Please enter a username."
);
String
username
=
keyboard
.
nextLine
();
if
(
username
!=
null
&&
!
users
.
containsKey
(
username
))
{
System
.
out
.
println
(
"that user does not exist"
);
}
else
{
FacebookUser
facebookUser
=
users
.
get
(
username
);
System
.
out
.
println
(
"Please enter a password."
);
String
password
=
keyboard
.
nextLine
();
if
(
facebookUser
.
password
.
equals
(
password
))
{
System
.
out
.
println
(
"Friends List:"
);
facebookUser
.
getFriends
();
}
}
}
// get recommendations of your friend's friends
public
void
getRecommendations
()
{
System
.
out
.
println
(
"Please enter a username."
);
String
username
=
keyboard
.
nextLine
();
if
(
username
!=
null
&&
!
users
.
containsKey
(
username
))
{
System
.
out
.
println
(
"that user does not exist"
);
}
else
{
FacebookUser
facebookUser
=
users
.
get
(
username
);
System
.
out
.
println
(
"Please enter a password."
);
String
password
=
keyboard
.
nextLine
();
if
(
facebookUser
.
password
.
equals
(
password
))
{
ArrayList
<
FacebookUser
>
recommendations
=
new
ArrayList
<
FacebookUser
>
();
for
(
FacebookUser
f
:
facebookUser
.
friends
)
{
getRecommendations
(
f
,
recommendations
);
}
if
(
!
recommendations
.
isEmpty
())
{
System
.
out
.
println
(
"Recommendation friends List:"
);
for
(
FacebookUser
u
:
recommendations
)
{
System
.
out
.
println
(
u
);
}
}
}
}
}
private
void
getRecommendations
(
FacebookUser
user
,
ArrayList
<
FacebookUser
>
recommendations
)
{
if
(
user
!=
null
&&
user
.
friends
!=
null
&&
!
user
.
friends
.
isEmpty
())
{
for
(
FacebookUser
friend
:
user
.
friends
)
{
if
(
!
recommendations
.
contains
(
friend
))
{
recommendations
.
add
(
friend
);
getRecommendations
(
friend
,
recommendations
);
}
}
}
}
}
// end all facebook
Facebook/src/FacebookUser.java
Facebook/src/FacebookUser.java
import
java
.
io
.
Serializable
;
import
java
.
util
.
ArrayList
;
public
class
FacebookUser
extends
UserAccount
implements
Comparable
<
FacebookUser
>
,
Cloneable
,
Serializable
{
/**
*
*/
private
static
final
long
serialVersionUID
=
1L
;
protected
String
passwordHint
;
protected
ArrayList
<
FacebookUser
>
friends
;
public
FacebookUser
(
String
username
,
String
password
)
{
super
(
username
,
password
);
friends
=
new
ArrayList
<
FacebookUser
>
();
}
public
void
setPasswordHint
(
String
hint
)
{
this
.
passwordHint
=
hint
;
}
public
void
friend
(
FacebookUser
newFriend
)
{
if
(
friends
.
contains
(
newFriend
))
{
System
.
out
.
println
(
"That friend has already been added. "
);
}
else
{
friends
.
add
(
newFriend
);
}
}
public
void
defriend
(
FacebookUser
formerFriend
)
{
if
(
!
friends
.
contains
(
formerFriend
))
{
System
.
out
.
println
(
"That friend has not been added. "
);
}
else
{
friends
.
remove
(
formerFriend
);
}
}
public
ArrayList
<
FacebookUser
>
getFriends
()
{
ArrayList
<
FacebookUser
>
friendsCopy
=
new
ArrayList
<
FacebookUser
>
();
for
(
FacebookUser
user
:
this
.
friends
)
{
try
{
friendsCopy
.
add
((
FacebookUser
)
user
.
clone
());
}
catch
(
CloneNotSupportedException
cloneNotSupportedException
)
{
cloneNotSupportedException
.
printStackTrace
();
}
}
for
(
int
i
=
0
;
i
<
friendsCopy
.
size
();
i
++
)
{
System
.
out
.
println
(
friendsCopy
.
get
(
i
));
}
return
friendsCopy
;
}
public
int
compareTo
(
FacebookUser
o
)
{
if
(
this
.
username
.
compareToIgnoreCase
(
o
.
username
)
!=
0
)
{
return
this
.
username
.
compareToIgnoreCase
(
o
.
username
);
}
return
0
;
}
@
Override
public
void
getPasswordHelp
()
{
setPasswordHint
(
passwordHint
);
System
.
out
.
println
(
"Password Hint: "
+
passwordHint
);
}
}
// end facebookUser
Facebook/src/UserAccount.java
Facebook/src/UserAccount.java
import
java
.
io
.
Serializable
;
public
abstract
class
UserAccount
implements
Serializable
{
/**
*
*/
private
static
final
long
serialVersionUID
=
1L
;
protected
String
username
;
protected
String
password
;
protected
boolean
active
;
// check the account is active or not
public
UserAccount
(
String
username
,
String
password
)
{
this
.
username
=
username
;
this
.
password
=
password
;
active
=
true
;
}
public
boolean
checkPassword
(
String
password
)
{
boolean
passwordMatch
;
if
(
password
.
equals
(
this
.
password
))
{
passwordMatch
=
true
;
}
else
{
passwordMatch
=
false
;
}
return
passwordMatch
;
}
public
void
deactivateAccount
()
{
active
=
false
;
}
@
Override
public
int
hashCode
()
{
final
int
prime
=
31
;
int
result
=
1
;
result
=
prime
*
result
+
((
username
==
null
)
?
0
:
username
.
hashCode
());
return
result
;
}
@
Override
public
boolean
equals
(
Object
obj
)
{
if
(
this
==
obj
)
return
true
;
if
(
obj
==
null
)
return
false
;
if
(
getClass
()
!=
obj
.
getClass
())
return
false
;
UserAccount
other
=
(
UserAccount
)
obj
;
if
(
username
==
null
)
{
if
(
other
.
username
!=
null
)
return
false
;
}
else
if
(
!
username
.
equals
(
other
.
username
))
return
false
;
return
true
;
}
@
Override
public
String
toString
()
{
return
"Username: "
+
username
+
" "
;
}
public
abstract
void
getPasswordHelp
();
}
// end UserAccount