private void intersectEmail(String email1, String email2, ISet intersect)
{
// email1 is a particular address
if (email1.IndexOf('@') != -1)
{
String _sub = email1.Substring(email1.IndexOf('@') + 1);
// both are a particular mailbox
if (email2.IndexOf('@') != -1)
{
if (Platform.CompareIgnoreCase(email1, email2) == 0)
{
intersect.Add(email1);
}
}
// email2 specifies a domain
else if (email2.StartsWith("."))
{
if (WithinDomain(_sub, email2))
{
intersect.Add(email1);
}
}
// email2 specifies a particular host
else
{
if (Platform.CompareIgnoreCase(_sub, email2) == 0)
{
intersect.Add(email1);
}
}
}
// email specifies a domain
else if (email1.StartsWith("."))
{
if (email2.IndexOf('@') != -1)
{
String _sub = email2.Substring(email1.IndexOf('@') + 1);
if (WithinDomain(_sub, email1))
{
intersect.Add(email2);
}
}
// email2 specifies a domain
else if (email2.StartsWith("."))
{
if (WithinDomain(email1, email2) || (Platform.CompareIgnoreCase(email1, email2) == 0))
{
intersect.Add(email1);
}
else if (WithinDomain(email2, email1))
{
intersect.Add(email2);
}
}
else
{
if (WithinDomain(email2, email1))
{
intersect.Add(email2);
}
}
}
// email1 specifies a host
else
{
if (email2.IndexOf('@') != -1)
{
String _sub = email2.Substring(email2.IndexOf('@') + 1);
if (Platform.CompareIgnoreCase(_sub, email1) == 0)
{
intersect.Add(email2);
}
}
// email2 specifies a domain
else if (email2.StartsWith("."))
{
if (WithinDomain(email1, email2))
{
intersect.Add(email1);
}
}
// email2 specifies a particular host
else
{
if (Platform.CompareIgnoreCase(email1, email2) == 0)
{
intersect.Add(email1);
}
}
}
}